我有一个非常简单的问题,但找不到一个好的解决方案。我在 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 对象并在参数哈希中替换它,但我认为应该是更好的方法。
非常感谢。费尔南多