繁体   English   中英

Rails:什么是处理空params数组的好方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM