我正在尝试创建一个包含复选框列表的表单。
<%= form_for(@user, url: creators_path) do |f| %>
<%= f.label :name %>
<% Subject.all.each do |subject| %>
<%= f.label subject.name %>
<%= f.check_box :subject_ids, class: 'form-control' %>
<% end %>
<%= f.submit "Save changes", class: "btn btn-primary" %>
<% end %>
我希望生成的user_params包含所选主题的ID数组。
使用上面的代码,我得到:
> params.require(:user)
<ActionController::Parameters {"name"=>"John", "subject_ids"=>"0"} permitted: true>
但我希望“subject_ids”成为一个数组:
> params.require(:user)
<ActionController::Parameters {"name"=>"John", "subject_ids"=>[0,1,2,3]} permitted: true>
在Rails表单中处理集合的正确方法是什么?
答案 0 :(得分:1)
你应该使用像这样的强大的参数
def safe_params
params.require(:user).permit(:name, subject_ids: [])
end
并在你的行动中
def create
..
safe_params[:subject_ids] # will now be an array
..
end