[英]Rails: What's a good way to deal with empty params array
在我的一种观点中,我有一种将数据发送到控制器的表格。
<%= form_for @user do |f| %>
<%= f.error_messages %>
<% for committee in @committees %>
<div>
<%= check_box_tag "user[relevant_committee_ids][]", committee.id, @user.relevant_committees.include?(committee) %>
<%= committee.name %>
</div>
<% end %>
<%= f.submit t(:save_settings) %>
<% end %>
如果表单为空,则不会生成params [:user],这将导致控制器中的以下代码失败:
@user.relevant_committee_ids = params[:user][:relevant_committee_ids] ||= []
与错误消息:
当您没有想到的时候,您有一个零对象! 您可能期望使用Array的实例。 评估为nil时发生错误。
如果未生成params [:user],有什么好方法可以读取空数组?
在此先感谢您的任何建议。
怎么样
@user.relevant_committee_ids = params[:user] ? params[:user][:relevant_committee_ids] : []
我的尝试是:
params[:user] ||= []
@user.relevant_committee_ids = params[:user][:relevant_committee_ids]
@user.relevant_committee_ids ||= []
通常,我发现在所有必须使用x ||= []
语法的地方都足够可读,我必须强调指出,我用空集合代替nil值。
@user.relevant_committee_ids = params[:user].try(:[], :relevant_committee_ids) || []
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.