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"}