用户模型:
has_and_belongs_to_many :events
活动模式:
has_and_belongs_to_many :users
用户控制器:
params.require(:user).permit(:role, {:event_ids => []})
事件控制器:
params.require(:event).permit(:subject, :location, :date, :time, :all_day, :reminder, :notes, {:users_ids => []})
我的表格:
<%= simple_form_for(@event) do |f| %>
<%= f.input :subject %>
<%= f.input :location %>
<%= f.input :date %>
<%= f.input :time %>
<%= f.association :users %>
<%= f.input :all_day %>
<%= f.input :reminder %>
<%= f.input :notes %>
<%= f.button :submit, :class =>"btn btn-default" %>
<% end %>
我希望能够从列表中选择用户并将该用户保存到数据库中。但是当我尝试创建一个新事件时,我在控制台中收到以下消息:
Unpermitted parameters: user_ids
我的设置是否不正确?我没有将正确的实例变量传递给表单吗?
答案 0 :(得分:6)
呃...详细信息!
以前如何:
params.require(:event).permit(:subject, :location, :date, :time, :all_day, :reminder, :notes, {:users_ids => []})
应该如何:
params.require(:event).permit(:subject, :location, :date, :time, :all_day, :reminder, :notes, {:user_ids => []})
请注意:users_ids实际上应该是:user_ids!
答案 1 :(得分:5)
或者你可以简单地使用这样的简写语法。
params.require(:event).permit(:subject, :location, :date, :time, :all_day, :reminder, :notes, user_ids: [])
注意:user_ids: []
代替{:user_ids => []}
答案 2 :(得分:1)
simple_form的属性: user_ids
#permit中的符号: users_ids
你已经添加了一个s,删除它,你应该尽我所能去。
答案 3 :(得分:1)
在我的情况下,我之前安装了Rails 3。我升级到Rails 4.选择刚刚传递一个字符串,而不是一个关联。因此,提出的语法不起作用。我只需要允许user_ids
。即:
params.require(:event).permit(:subject, :location, :date, :time, :all_day, :reminder, :notes, :user_ids)
似乎Rails 4改变了行为。