0

どのモデルにも直接リンクしないカスタム フォーム (ユーザーの評判) があります。最終的な報酬値に影響を与える評判基準がいくつかあります。フォームのコードは次のとおりです。

<%= form_tag("/add_reputing",:method => "POST") do%>
<div class="reputing_column">
    <p>
        <b>Your feedback:</b>
    </p>
    <p>
        <%= text_area_tag :comment,"",{:class=>"or-form-textarea"} %>
    </p>
    <%= submit_tag("Submit",:class=>"or-button")%>
</div>
<div class="reputing_column">
    <p>
        <b>Recomendation:</b>
    </p>
    <% @criterias.each do |c| %>
    <div class="reputing_row">
        <label><%= c.name%>:</label>
        <div>
            <% (c.rating_from .. c.rating_to).each do |i| %>
            <%= radio_button_tag "reputing_#{c.id}", i%><%= (i<1)? i : "+#{i}"%>
            <% end %>
        </div>
    </div>
    <% end %>
</div>
<% end %>

コントローラーでは、"reputing_#{c.id}"フィールドの値を要約する必要があります。次に、ユーザー評価テーブルにレコードを追加します。

このフォームからのデータをコントローラーで処理することは、どのように適切かつ適切に行われるのでしょうか? 私はその問題をグーグルで検索しようとしましたが、何も見つかりませんでした。

4

1 に答える 1

0

答えがないので、カスタムフォームと呼ばれるものの扱いを明確にしようと思います。

ラジオボタンを使用して好みの色を選択するためのフォームは次のとおりです。

= form_for :preferences, url: '', method: :post do |f|
    - %w[black blue white green red yellow].each do |color|
        = f.radio_button :color, color
        = f.label :color, color.capitalize, value: color
    = f.submit

モデルの有無にかかわらず使用できるRailsのフォームの優れた点。呼び出されたインスタンス変数がある場合@preferences、このフォームはそれを尊重し、そのcolorメソッドを呼び出して「現在の」色を決定します。この色は、生成されたフォームで選択されます。この変数が存在しない場合、それは大したことではありません。

いずれの場合も、フォームを送信すると、次の方法で選択した色にアクセスできるようになります。

params[:preferences][:color]
于 2012-04-28T21:56:01.980 に答える