【问题标题】:Associating models关联模型
【发布时间】:2011-12-04 04:58:00
【问题描述】:

我对 SQL 查询知之甚少,而且我是 ruby​​ on Rails 的新手。 这是我的问题。我有 2 张桌子国家和州。一个国家有很多州。 我知道 State 表中必须有外键连接到 Country 表。 所以查询一个国家的所有州是

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

我需要能够生成一个用于创建新州的表单,其中包含国家/地区的下拉列表。在创建州时,用户可以选择该州所属的国家。这将帮助我检索一个国家的所有州。我知道我需要分别在 Country 和 State 模型中使用 has_many 和 belongs_to。但我无法理解要在控制器和视图中进行的修改才能获得所需的形式。

【问题讨论】:

    标签: ruby-on-rails forms model controllers


    【解决方案1】:

    要在 ruby​​/rails 中获取属于某个国家/地区的所有州,您只需调用国家模型上的关联即可。例如:

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

    这就是 rails 关联的工作方式。您不需要自己编写 SQL。

    您可能还想在此处查看 rails 为关联提供的所有其他方法:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods

    【讨论】:

    • 抱歉回复晚了。非常感谢
    • 没有问题 - 您可能应该“接受”其中一个答案(如果它帮助您解决问题)。 :) 您可以通过单击最佳答案旁边的“打勾”来做到这一点。
    【解决方案2】:

    首先我希望您阅读有关 ruby​​ 的书,然后您可以继续阅读 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 %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多