2011-12-04 241 views
0

我對SQL查詢知之甚少,而且我對Ruby on Rails感到陌生。 這是我的問題。我有一個2表國家和州。一個國家有很多州。 我知道在State表中必須有加入國家表的外鍵。 所以查詢得到一個國家的所有狀態將關聯模型

Select * 
From State 
Where 
State. country = Country. country 
And Country.country = 'XYZ' 

我需要能夠生成表單創建一個新的狀態,其中有一個下拉的國家名單。在創建狀態時,用戶可以選擇國家所屬的國家。這將幫助我檢索一個國家的所有州。我知道我需要分別在國家和州模型中使用has_many和belongs_to。但我無法理解在控制器和視圖中所做的修改能夠獲得所需的形式。

回答

0

獲取所有狀態屬於國家紅寶石/您只需在國家模型上調用關聯即可。例如:

@my_country = Country.find params[:country] 
@states = @my_country.states.all 

這是軌道協會的工作方式。你不需要自己創建SQL。

您可能也想看看所有的其他方法軌提供了協會在這裏:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods

+1

對不起,我遲到response.Thanks很多 – Varsha

+0

沒有probs - 你應該「接受」其中一個答案(如果它幫助你解決問題)。 :)你可以通過點擊最佳答案旁邊的「打勾」來實現。 –

0

首先,我希望你閱讀關於紅寶石的書,然後你可以繼續使用rails。

推薦書籍: 紅寶石http://pragprog.com/book/ruby/programming-ruby Ruby on Rails的http://pragprog.com/book/rails4/agile-web-development-with-rails

這本書會給你一個想法的框架是如何工作的。

繼續解決您的問題。你只需要一個所有州和國家的名單。然後儘量把他們放在你的形式的數組:

例 在視圖(.html.erb文件)----

<% @countries = w{USA Japan etc..}%> 
<% @state = w{state etc...} %> 
<% form_for ..... |f|%> 
<% f.select :country, @country.collect{|c| [c,c]} %> 
<% f.select :state, @state.collect{|c| [c,c]} %> 
<% end %> 
+0

感謝鏈接 – Varsha