似乎无法提交collection_select并接收未经许可的参数::hero_id

Can't seem to submit collection_select and receiving Unpermitted parameter: :hero_id

提问人:MarrixRed 提问时间:8/19/2020 最后编辑:MarrixRed 更新时间:8/19/2020 访问量:56

问:

对不起,我第一次发帖。我一直在尝试让这个集合提交工作,但每次我按下创建报告按钮时,我都会回到屏幕并在 rails 服务器终端中输出 Unallowed parameter: :hero_id。

class Report < ApplicationRecord
  validates :subject, presence: true, length: { minimum: 6, maximum: 100 }
  validates :description, presence: true, length: { minimum: 10, maximum: 300 }

  belongs_to :requester
  has_and_belongs_to_many :heros
end

视图/表单

<div class="container">
   <div class="row justify-content-center">
      <div class="col-10">
         <% if @report.errors.any? %>
         <h2>The following errors prevented the article from being saved</h2>
         <ul>
            <% @report.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
            <% end %>
         </ul>
         <% end %>
         <%= form_with(model: @report, class: "shadow p-3 mb-3 bg-dark rounded", local: true) do |f| %>
         <div class="form-group row">
            <%= f.label :subject, class: "col-2 col-form-label text-light" %>
            <div class="col-10">
               <%= f.text_field :subject, class: "form-control shadow rounded", placeholder: "Subject of Report" %>
            </div>
         </div>
         <div class="form-group row">
            <%= f.label :description, class: "col-2 col-form-label text-light" %>
            <div class="col-10">
               <%= f.text_area :description, rows: 10, class: "form-control shadow rounded", placeholder: "Description of Issue" %>
            </div>
         </div>
         <div class="form-group row">
            <%= f.label :hero, class: "col-2 col-form-label text-light" %>
            <div class="col-10">
               <%= f.collection_select(:hero_ids, Hero.all, :id, :hero_name, {prompt: "Select a Hero"}, {:required => true}) %>
            </div>
         </div>
         <div class="btn-toolbar p-2 mb-2 row justify-content-center">
            <%= f.submit class: "btn btn-primary" %>
         </div>
         <% end %>
      </div>
      <div class="mb-3">
         <%= link_to '[ Cancel and return to reports listing ]', reports_path, class: "text-info" %>
      </div>
   </div>
</div>

控制器

def report_params
    #byebug
 params.require(:report).permit(:subject, :description, hero_ids: [])
end

安慰

(byebug) params.require(:report)
<ActionController::Parameters {"subject"=>"Test report", "description"=>"Test report", "hero_ids"=>"1"} permitted: false>
Ruby-on-Rails 集合-选择

评论

0赞 jvillian 8/19/2020
在服务器控制台中显示参数时显示它们。
0赞 jvillian 8/19/2020
这些不是显示在控制台中的参数。这是一个例子。此外,请将您的控制台输出编辑到您的原始问题中。注释中的代码和其他信息不是一件好事。Report
0赞 MarrixRed 8/19/2020
谢谢你的提示。我想我添加了你要求的东西。
0赞 Rockwell Rice 8/19/2020
注意到它在发送过来的参数中是怎么说的吗?如果这是该字段,则将其更改为与白名单参数 (hero_idshero_id => hero_ids)
0赞 jvillian 8/19/2020
@RockwellRice - 需要转换为 ,是吗? 仍然不正确。另外,为什么控制台会读取“不允许的参数::hero_id”,而参数中显然没有?hero_id: []hero_idshero_ids: []hero_id

答: 暂无答案