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