Activerecord Rails 5中使用的未经许可的参数有很多,通过

Activerecord Rails 5中使用的未经许可的参数有很多,通过,activerecord,ruby-on-rails-5,strong-parameters,Activerecord,Ruby On Rails 5,Strong Parameters,我一直在为我的约会模型获取不允许的参数 这是我的模型 class Appointment < ApplicationRecord belongs_to :client belongs_to :trainer end class Trainer < ApplicationRecord has_many :appointments has_many :clients, through: :appointments

我一直在为我的约会模型获取不允许的参数

这是我的模型

    class Appointment < ApplicationRecord
      belongs_to :client
      belongs_to :trainer
    end

    class Trainer < ApplicationRecord
      has_many :appointments
      has_many :clients, through: :appointments
    end

   class Client < ApplicationRecord
    has_many :appointments
    has_many :trainers, through: :appointments
  end
错误表示培训师、客户机的参数不允许。 我的强参数方法是否遗漏了什么

这是我的约会/新视图

<%= form_for @appointment do |f| %>
  <%= f.datetime_select :appointment_date %>
  <%= f.collection_select :trainer, Trainer.all, :id, :first_name %>
  <%= f.collection_select :client, Client.all, :id, :name %>
  <%= f.submit %>
<% end %>


我将集合添加到appt_params方法中,但仍然得到相同的错误。我仍在掌握Rails的窍门,任何帮助都将不胜感激,谢谢

因为您已经使用了关联,所以只有客户id和培训师id就足够了,它们应该是整数形式,而不是数组形式

因此,将强参数方法代码更改为:

def appt_params
 params.require(:appointment).permit(:appointment_date, :client_id, 
 :trainer_id)
end
以及您的应用程序/新视图:

<%= form_for @appointment do |f| %>
  <%= f.datetime_select :appointment_date %>
  <%= f.collection_select :trainer_id, Trainer.all, :id, :first_name %>
  <%= f.collection_select :client_id, Client.all, :id, :name %>
  <%= f.submit %>
<% end %>

运行时遇到了与您相同的问题,经过数小时的调试,我终于解决了这个问题:

这是我第一次尝试在Rails中与您类似的模型进行关联,因此大多数在线文档建议将外键定义为
客户机ID:[]
假设您的ID是数组,而它们肯定是整数作为我的参数,其中

Parameters: {"utf8"=>"✓", "authenticity_token"=>"LEcwQ56xYJGpq2zIs6Cz0YbU7B7mBKRa6rhspVIxo9vEB5/UoFUvHYiN0UC0krTiIp+d0tzhit6DZT1Z8PmYYg==", "califica"=>{"text"=>"hi", "grade"=>"5", "user_id"=>"1", "party_id"=>"1"}, "commit"=>"Create Calification"}
我认为这是由于
f.collection\u select
将一个值作为预期值。因此,在使用数组的许可数小时后,例如
:user\u id=>[]
user\u id:[]
,我总是得到未经许可的参数的错误


尝试了@Bharath的答案(这是正确的),但仍然不起作用,那是因为我意识到我的旧模型没有使用引用(
ActiveModel::UnknownAttributeError(未知属性'user\u id'表示加利福尼亚州):
)因此,我不得不做了一个修改,添加了一个外键,然后一切都正常了。

@ryanb082听到这个消息很高兴。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"LEcwQ56xYJGpq2zIs6Cz0YbU7B7mBKRa6rhspVIxo9vEB5/UoFUvHYiN0UC0krTiIp+d0tzhit6DZT1Z8PmYYg==", "califica"=>{"text"=>"hi", "grade"=>"5", "user_id"=>"1", "party_id"=>"1"}, "commit"=>"Create Calification"}