我得到了用户的computer_ids
<%= check_box_tag "user[computer_ids][]", computer.id, @user.computers.include?(computer) %>
如果我从复选框数组中至少选择了一个,那就好了。但是如果我不选择任何东西,它就会给我一个这样的数组
undefined method `[]' for nil:NilClass
这是因为没有参数出现。我没有找到解决办法。这一关系是habtm
我试着控制它是否是空的
if ( !(params[:user][:computer_ids].empty?) )
编辑:
因为computer_ids是用户中的唯一参数,所以它不知道什么是params:user是什么,这就是为什么它会给出错误。
if ( !(params[:user].present?) ) , has solved the problem
发布于 2015-12-01 03:57:26
将隐藏字段添加到所有带有空值的复选框中。如果用户没有检查任何复选框,如:-
<%= form_for @user do |f| %>
<%= hidden_field_tag "user[computer_ids][]", nil %>
<% Computer.all.each do |computer| %>
<%= check_box_tag "user[computer_ids][]", computer.id, @user.computers.include?(computer) %>
<% end %>
<%= f.submit 'Submit'%>
<% end %>
拒绝来自params的空白值,例如:
params[:user][:computer_ids] = params[:user][:computer_ids].reject { |c| c.empty? }
https://stackoverflow.com/questions/34019726
复制相似问题