管理者がスプレッドシートのように特定のモデルSubmission
のすべての値を編集できるようにするためのフォームを提供しようとしています。 Submission
は、1つの文字列フィールド:domain
で構成されています。動的キーの強力なパラメータを設定する
問題は、このコンテキスト内で強力なパラメータを処理する方法を理解できないということです。私はthis oneのような動的キーを扱う同様の例を見つけましたが、私はそれを私のパラメータ構造にどのように適用するかを理解できません。私はちょうどtap
がどのように働くかについて十分にはっきりしていないと思う。ここで
は私のパラメータの例です:
{"3"=>{"domain"=>"domain3"}, "2"=>{"domain"=>"domain2"}, "1"=>{"domain"=>"domain1"}
それはここで私が使用しているフォームがだ、助け場合:
<%= form_tag update_multiple_submissions_path, method: :put do %>
<table data-toggle="table" data-sort-name = "domain" data-sort-order = "desc">
<thead>
<th data-field="domain" data-sortable="true">Domain</th>
</thead>
<tbody>
<% @submissions.each do |submission| %>
<%= simple_fields_for "submissions[]", submission, defaults: {label: false} do |f| %>
<tr>
<td><%= submission.domain %><%= f.input :domain %></td>
</tr>
<% end %>
<% end %>
</tbody>
<table>
<%= submit_tag "Save" %>
<% end %>
そして、あなたが興味が場合に、ここにupdate_multiple
方法があります私のコントローラから。これが馴染んでいれば、私は鉄道から輪郭を得ました。これは強力なパラメータが遍在する前のレール3で非常に効果的でした。
def update_multiple
logger.debug "update_multiple #{submission_params}"
@submissions = Submission.update(submission_params[:submissions].keys, params[:submissions].values)
flash[:notice] = "Updated Submissions"
redirect_to review_submissions_path
end
私は完全にparams.permit!
を使用して、強力なベビーカーをバイパスしますが、もちろん、これは受け入れられないソリューションである場合、これは非常によく動作します。
ありがとうございました!
そのペイロードに固有の必須ルールを設定する(サブミッションの配列)、または強力なパラメータにルールを動的に追加するには... – Mat