0

わかりました、私は探し回っていますが、これに対する答えは見つかりませんでした。データベースからページ、セクション、および調査(フォーム)をレンダリングする非常に複雑なカスタムレールフォームジェネレータアプリケーションがあります。

サーバー側で検証を行い(JavaScriptをまだ終了しておらず、両方のタイプが必要です)、ラジオボタンを除くすべてのタイプのフォーム入力オブジェクトで機能します。チェックされていない場合、パラメータに表示するラジオボタンを送信することができないためです。パラメータの外側でラジオボタンを探すのではなく、応答ループでそれらをチェックする方法を見つけたいと思います(可能な場合)。

検証を確実にするためにモデルにバインドするというこの提案を見てきましたが、私の質問は一意であるため、バインドするモデルオブジェクトがありません。

私のフォームは1つの部分で宣言されています:

<%= form_tag take_surveys_path, :id => "take_surveys_new", :method => :post do %>

ラジオボタン(質問タイプフィールドを調べるパーシャルの一部)を生成するための私のコード:

<% when 'Radio Button' %>
 <% question.answers.each do |answer| %>
        <%= radio_button "response[#{question.id}]content", question.question_text, answer.value %>
        <%=answer.value%>
        <br />
        <% end %>
<% end %>

「take_survey_controller」のパラメーターを繰り返し処理し、各質問をチェックして、それが有効かどうかを確認します。これには、正規表現と、質問オブジェクトに設定されたいくつかの属性に基づく必要な検証が含まれます。

  params[:response].each do |question_id, answer|
        #find my questions and answers, call 
        if item.valid?          
            #do a bunch of saving and stuff...
        end
  end   

ただし、空のラジオボタンはパラメータに投稿されないため、これがラジオボタンに対して呼び出されることはありません。

何か提案や助けはありますか?必要に応じて、さらに多くのコードを共有してください。

4

2 に答える 2

1

探しているのは、ラジオボタンのデフォルト値を設定する方法です。チェックボックスはデフォルトでこれを行いますが、この場合、ラジオボタンで発生しているようには見えません。

これを試して:

<%= hidden_field "response[#{question.id}]content", question.question_text %>
<%= radio_button "response[#{question.id}]content", question.question_text, answer.value %>
于 2012-10-18T20:26:27.097 に答える
1

検証の一部に入力パラメータのチェックを含める必要があるようです。ラジオボタンが選択されていない場合、値は送信されません。したがって、パラメータ応答ループに移動する前に、質問IDのリストを用意し、各質問が送信されたことを確認する必要があります。

array_of_question_ids.each do |id|
  handle_missing_question(id) unless params[:response][id]
end

params[:response].each ...
于 2012-10-18T20:07:05.337 に答える