簡體   English   中英

Rails 3 jQuery更新,其中“ .find params [:id]”不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM