2014-02-26 66 views
0

我正在嘗試創建一個基本的調查應用程序。在我的調查頁面上,我正在循環顯示每個答案選項,並將其顯示爲一個單選按鈕或複選框,作爲form_for來創建用戶的選擇。這些選擇對於單選(或單選按鈕)的問題非常有效,但它們不能保存多選問題。我很確定這與我對複選框的表單有關。Rails form_for check_box

好像我應該做的

<%= f.check_box :answer_id, answer.id %> <%= answer.title %> <br> 

類似我如何創建的單選按鈕,但拋出一個錯誤

undefined method `merge' for 14:Fixnum 

這裏是我的代碼顯示:

<h3>Questions:</h3> 
<ul><% @survey.questions.each do |question| %> 
    <li><p><%= question.title %></p></li> 
    <% choice = question.choices.build %> 
    <% if question.single_response == true %> 
    <%= form_for [question, choice] do |f| %> 

      <% question.answers.each do |answer| %> 
      <%= f.radio_button :answer_id, answer.id %> <%= answer.title %><br> 
      <% end %> 
      <%= f.hidden_field :survey_id, value: @survey.id %> 
      <%= f.submit %> 
      <% end %> 

      <br /> 
      <% else %> 
       <%= form_for [question, choice] do |f| %> 
        <% question.answers.each do |answer| %> 
        <%= f.check_box :answer_id %> <%= answer.title %> <br> 
        <%= f.hidden_field :survey_id, value: @survey.id %> 
        <% end %> 
        <%= f.submit %> 
      <% end %> 
      <br /> 
     <% end %> 
<% end %> 
</ul> 

任何想法,我需要做的,以保存answer_id選擇,以便它真正cr吃了選擇?

謝謝!

回答

1

對於複選框,您實際上想要返回一個數組作爲參數。有一點有趣的語法,因爲我們實際上並不想使用表單生成器方法。它應該是這個樣子(適應您的具體型號名稱和方法)

<%= check_box_tag 'choice[answer_ids][]', answer.id %> 

使用這種語法應該告訴Rails編譯所有選中的複選框值到一個數組。

This Railscast越過這個話題。

+0

這似乎是拋出一個錯誤 - 未定義的方法'answer_id []' –

+0

我更新了我上面的答案。您可能需要調整它以使用您自己的模型名稱和方法,並且可能必須將「answer_ids」方法添加到代表用戶選擇的模型中,但希望這會爲您提供一般性要點。絕對看Railscast更詳細的演練。 –

+0

這很有道理。我總是想知道_tag是幹什麼的:)。我非常感謝幫助! –