RoR Lookup示例

时间:2009-09-08 02:20:51

标签: ruby-on-rails lookup

我有一个非常简单的问题,但找不到一个好的解决方案。我在ruby中有一个查找代码(例如,居住在州的学生):

# State lookup (id, name)
class State < ActiveRecord::Base
    has_many :students
end

# Class that belogs to a state
class Student< ActiveRecord::Base
    belongs_to :state
end

在view / students / new.html.erb视图中,我将状态显示为下拉列表:

  <p>
    <%= f.label :state %><br />
    <%= f.collection_select :state, State.find(:all), 
       :id, :name, :prompt => "Select a State" %>
  </p>

到目前为止,这么好,但是当我点击保存时,我收到了一个错误:

State(#37872860) expected, got String(#21001240)

什么似乎合理,因为我正在向Student.create方法发送字符串而不是State对象。

在RoR中处理此问题的最佳方法是哪种?我手动在控制器中获取State对象并将其替换为参数hash,但我认为应该是更好的方法。

非常感谢。 费尔南多

2 个答案:

答案 0 :(得分:0)

<%= f.collection_select :state_id, State.find(:all), :id, :name, :prompt => "Select a State" %>

:state_id不是:state

答案 1 :(得分:0)

State.find(:all)应该是你控制器中发生的事情,而不是你的观点。我甚至认为它不可能在视图中访问模型,这可能是你的问题。如果你在控制器中做了类似的事情:

@states = State.find(:all)

然后在视图中使用@states变量:

 “选择州”%&gt;

我希望有所帮助。