[英]Rails 3 JQuery update where “.find params[:id]” doesn't work
在Rails 3應用程序中,我有一個包含20多個問題和答案的表單。 該頁面使用具有兩個級別的映射數組填充... q [0} .blah是問題數組,q [1] .yada是答案數組。 單擊單選按鈕時,我使用jQuery提交每個更改的答案。 目前,我有以下內容。
視圖:
<%= form_tag update_result_answers_path, :remote => true do %>
<% @answers.each do |q| %>
<%= q[0].question %>
<% [ 1, 2, 3, 4, 5 ].each do |f| %>
<%= radio_button_tag q[1].id, f, f == q[1].score, :class => 'submittable' %>
<% end %>
<% end %>
<% end %>
控制器:(這是錯誤的)
def update_result
@answers = Answer.find params[:id] # THIS LINE PRODUCES THE ERROR BELOW
@answers.update_attributes params[:score]
end
我使用答案ID為每個單選按鈕集命名。 因此,...在運行Rails服務器的控制台窗口中,我返回由答案ID和每個問題的答案組成的參數:
Parameters: {"22"=>"1", "6"=>"1", "7"=>"1", "12"=>"3", "13"=>"1", "8"=>"2", "14"=>"1", "15"=>"3", "authenticity_token"=>"q2jW71ndaw4vkbTP9qt0Tuo+sOUhdF/Kf4xTf6Up0AY=", "utf8"=>"✓", "16"=>"4", "17"=>"1", "1"=>"1", "18"=>"1", "2"=>"5", "3"=>"4", "19"=>"4", "20"=>"5", "21"=>"1", "4"=>"2", "5"=>"2"}
然后出現錯誤:
ActiveRecord::RecordNotFound (Couldn't find Answer without an ID)
如何修改控制器代碼以獲取答案ID和答案值? 隱藏的領域也許?
謝謝你的幫助。
更新:根據您的要求,邁克。 輸出...
._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._ ._非常
._問題._ ._ ._從不._ ._很少._ ._次._ ._ ._經常._ ._ ._經常
1_等等_._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O
2_等等_._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O
3_等等_._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O ._ ._ ._ ._ O
繼續
O是單選按鈕,單擊后應更新。
更新2:每個請求,路由文件-
resources :answers do
collection do
post :update_result
end
end
對於update_result_answers_path
,您的路線文件是什么樣的?
除非您的路由定義了params[:id]
,並且您的表單所操作的對象包括它,否則params[:id]
不會只是神奇地出現。 您使用的是普通的form_tag
而不是form_for _object_
,因此表單不會直接在對象上運行。
您可能需要通過jQuery傳遞“ id”參數,以執行示例中列出的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.