2013-05-27 48 views
0

我有2個表,即studentform和城市。城市表格有2列'id'和'name'。我在城市表中存儲城市表中的'id'在我的studentform列'城市'如何連接兩個表並顯示所需的列值?

我必須通過加入'studentform'和'cities'表來顯示他們城市的學生列表。

如何加入這兩個表格並從城市表中獲取城市名稱,以存儲在studentform表的「城市」列中的相應標識。

我嘗試了下面的方法,但在輸出列表中,城市列顯示'id'值。如何改變它以顯示'名稱'?

class StudentForm < ActiveRecord::Base 
    has_many :cities 
end 

class City < ActiveRecord::Base 
    belongs_to :student_form 
end 
+2

這裏沒有明確的問題。所需的行爲只是在選擇下拉菜單中默認選擇的保存ID對應的城市名稱? – gregates

+0

不,那不是我的問題。默認選擇的功能工作正常。但如何在列表視圖中顯示城市的名稱而不是ID? – Abhishek

回答

0

我說得對不對,你希望每個StudentForm屬於一個City?只有這樣,您才能將city_id存儲在StudentForm中。但隨後你的模型是:

class StudentForm < ActiceRecord::Base 
    belongs_to :city 

    delegate :name, to: :city. prefix: true 
end 

class City < ActiceRecord::Base 
    has_many :student_forms 
end 

,你可以用

form = StudentForm.first 
puts form.city.name 

puts form.city_name 

在你的榜樣,每個StudentForm的has_many :cities訪問形式的城市的名字,所以City需要參考StudentForm(第student_form_id列)。

+0

SELECT s.firstname,c.name FROM student_forms小號 INNER JOIN城市C對c.id = s.id LIMIT 0,30 這是我所期待換我想我的指數顯示學生姓名和city_name。目前,我的索引視圖顯示了學生姓名和city_id。現在,如何通過city_id顯示各個學生的city_name? – Abhishek

+0

'student_form.city'是模型'City'的一個實例,所以'student_form.city.name'是屬於'student_form'的'City'的屬性'name'。 我想,這就是你要找的。 (但你選擇的連接必須是'ON c.id = s.city_id') –

+0

在Rails中,你經常不必關心SQL,它是由ActiveRecord和AREL完成的。 –

相關問題