[英]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.