簡體   English   中英

一種形式的多個記錄 - 強大的參數問題

[英]multiple records in one form - strong params issue

我想用一個表單創建多個記錄,但我不確定如何使它與強參數一起工作。 我可以讓強參數接受哈希數組,但我不知道如何讓表單發布,我可以讓表單發布 hash 和 integer 鍵,但我不確定如何讓強參數接受這一點。

我有一個Question model 和一個Answer model。 這是一個questionnaire頁面,它顯示了所有Question並讓用戶創建Answer給他們。

<h1>Questionnaire</h1>
<%= form_with url: questionnaire_path, local: true do |form| %>
  <% @questions.each_with_index do |question| %>
    <%= fields_for "answers[]", question do |af| %>
      <p><%= question.body %></p>
      <% question.options&.each_with_index do |option, index| %>
        <%= af.check_box :options, {multiple: true }, index, nil %>
        <%= af.label :options, option %>
        <%= af.hidden_field :question_id, value: question.id %>
      <% end %>
    <% end %>
  <% end %>
  <p><%= form.submit "Submit Answers" %></p>
<% end %>

我得到看起來像這樣的參數:

"answers"=>{"0"=>{"options"=>["0"]}, "1"=>{"options"=>["0", "2"]}}

所以我嘗試使用這個:

  def answer_params
    params.require(:answers).permit(:question_id, options: [])
  end

但后來我得到一個錯誤:

Unpermitted parameters: :1, :2

我不喜歡這個解決方案,但到目前為止我發現的解決方法是更改我的fields_for以在answers之外包含一個 scope ,稱為questionnaire

<%= fields_for "questionnaire[answers][]", question do |af| %>

然后把answer_params改成這個別扭:

  def answer_params
    params.require(:questionnaire).permit(answers: [:question_id, options: []])[:answers].values
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM