我有一個非常簡單的問題,但無法找到一個很好的解決方案。我有紅寶石查找代碼(例如,生活在一個國家的學生):RoR查找示例
# 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
,並在視圖/學生/ 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方法。
哪個是在RoR中處理這個問題的最好方法?我手動獲取控制器中的狀態對象並將其替換爲參數哈希值,但我認爲應該是更好的方法。
非常感謝。 費爾南多
謝謝JDL,但嘗試過,現在我得到:在呈現舞臺上的#<狀態:xxxxxxxx>的undefined方法'state_id'。 – Fernando 2009-09-08 02:48:00
你可以從視圖中發佈form_tag行嗎? – jdl 2009-09-08 03:05:08
jdl,非常感謝。問題在於,在我的學生表中,狀態欄被命名爲'州',而不是'state_id'。這造成:如果在視圖中引用了state_id,則會下降。感謝您的提示在表格中找到了問題,重新創建它,現在它按照您的說法工作(f.collection_select:state_id,...與之相同)。 關心;費爾南多 – Fernando 2009-09-08 12:49:23