2011-05-08 33 views
1

在rails 3應用程序中,我有一個包含20多個問題和答案的表單。該頁面使用具有兩個級別的映射數組填充... q [0} .blah是問題數組,q [1] .yada是答案數組。我使用jQuery在單擊單選按鈕時提交每個已更改的答案。目前我有以下。Rails 3 JQuery更新其中「.find params [:id]」不起作用

觀點:

<%= 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每個單選按鈕組。所以,在......在我有軌運行的服務器端控制檯窗口我回來由一個答案ID和每一個問題的答案PARAMS:

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_ blah blah._ ._ ._ O ._ ._。O ._ ._ ._ O ._ ._ O ._ ._ ._。O

2_ blah blah._ ._ ._ O ._ ._。O ._ ._ ._ ._ ._。O._ ._ ._ O

3_ blah blah._ ._ ._ O ._ ._ ._ ._ ._ ._ O ._ ._ ._ ._Ø._ ._ ._ ._Ø

繼續

的O是可以在點擊需要更新時,單選按鈕。

更新2:每個請求,路由文件 -

resources :answers do 
    collection do 
     post :update_result 
    end 
    end 
+0

你能發佈這個表單的html輸出嗎? – mkly 2011-05-08 18:54:28

+0

@Mike,謝謝你的期待。我更新了輸出。 – Jay 2011-05-08 21:58:30

回答

0

那麼你的路由文件看起來像爲update_result_answers_path

params[:id]不會奇蹟般地出現,除非你的路線定義它,並且你的表單正在操作的對象包含它。您正在使用一個普通的form_tag而不是一個form_for _object_,因此表單不直接在對象上運行。

您可能需要通過jQuery傳入「id」參數來執行您在示例中列出的內容。

+0

該路線包含在該帖子的更新中。謝謝。 – Jay 2011-05-09 01:17:52

+0

@Jay 所以,就像我想的那樣,默認情況下,你的路由不會提供任何形式的[:id]參數。如果你讀過它,你已經回答了你自己的問題 - 你甚至粘貼了傳入的參數 - 並且你沒有[:id]參數,這就是爲什麼你的AR#找不到。 – cpjolicoeur 2011-05-09 01:57:26

+0

我從來沒有在路線中放過一個參數。會谷歌它,但我從來沒有見過。 – Jay 2011-05-09 11:56:00