2017-02-04 31 views
0

我正在創建簡單的Quiz應用程序。到目前爲止,我已經實現了可創建嵌套窗體的Cocoon gem。一切都很好,除了我想將一些變量傳遞給Cocoon偏好。使用Jquery,Rails 4設置Cocoon partial的局部值4

問題:我可以發送沒有問題的靜態值,但我想傳遞在Jquery中計算的動態值。

我的代碼:

index.html.erb

<%= link_to_add_association 'Pievienot atbildi', f, :answers,render_options: {locals: { question_id: 'Holmes' }}, :class=>"btn btn-default" %> 


<script type="text/javascript"> 
      var n = $(".reg_input_question").length; 
      alert(n); 
</script> 

_answer_fields.html.erb

<%= f.radio_button :correct_one, false, :checked => false, :name=> question_id %> 
    <%= link_to_remove_association "Dzēst atbildi", f , :class=>"btn btn-default text-danger"%> 

我想從指數發送ñ變量.html.erb頁到_answers_fields部分。我可以發送靜態值「福爾摩斯」,但我不知道如何 設置{locals: { question_id: 'Holmes' }}值其他使用腳本的東西。

我發現Great example要做到這一點與常規部分,但因爲我使用Cocoon部分處理,我不能在該例中。

我想實現:

我有3個嵌套模型試驗,問題和答案。首先我創建問題:

<%= link_to_add_association "Pievienot jautājumu", f, :questions, :class=>"btn btn-default" %> 

創建問題時,我可以用上面的代碼創建答案。答案部分由答案文本和correct_one布爾值組成。我正在使用radio_button來允許從新創建的答案中選擇一個作爲correct_one。

問題:當我創建多個問題時,他們的答案共享相同的radio_button名稱「Holmes」。當用戶爲第一個問題選擇了正確的答案時,這會導致問題,然後單擊第二個問題答案以前的選擇被清除。

我想是這樣的:

1. Question 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> 1 %> 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> 1 %> 

2. Question 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> 2 %> 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> 2 %> 

目前我有這樣的:提前任何幫助

1. Question 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %> 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %> 

2. Question 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %> 
    <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %> 

感謝。

+0

我想你需要一個複選框來代替。一個單選按鈕將允許你爲同一個字段指定不同的值(並且只選擇一個)。你想表明一個答案是否正確,所以你將不得不爲每個答案保存一個值,否?我收到單選按鈕確保您自動取消選擇其他值,但在這種情況下,它不會正確保存到數據庫。我認爲你需要這樣的東西,而不是:http://stackoverflow.com/questions/2947569/how-to-automatically-uncheck-a-checkbox-if-another-checkbox-is-checked-through-j – nathanvda

回答

0

我找到辦法解決這個問題:

_answers_fields.html。ERB

 $('input[name="Holmes"]').each(function() { 

     var id = $(this).attr('id').match(/\d+/); 

     $(this).attr('name', id); 

     }); 

基本上,該腳本遍歷名稱爲「福爾摩斯」的所有答案字段和改變name屬性爲ID的一部分(由於每個輸入的ID是特定的資源 - 每個問題ID傳遞給嵌套資源)。

醜陋的方法,但它確實符合我的需要。