2010-11-24 62 views
0

在我的一個觀點中,我有一個將數據發送給控制器的表單。Rails:什麼是處理空params數組的好方法

<%= 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.relevant_committee_ids = params[:user][:relevant_committee_ids] ||= [] 

隨着錯誤消息:

當你沒有 期待它時,你有一個零對象!您可能預期了Array的一個 實例。錯誤發生時 評估爲零[]

如果沒有生成params [:user],那麼獲取空數組的好方法是什麼?

在此先感謝您的任何建議。

回答

1

如何

@user.relevant_committee_ids = params[:user] ? params[:user][:relevant_committee_ids] : [] 
0

我的嘗試是:

params[:user] ||= [] 
@user.relevant_committee_ids = params[:user][:relevant_committee_ids] 
@user.relevant_committee_ids ||= [] 

一般情況下,我覺得這是可讀足夠使用x ||= []語法無處不在,我必須強調的是,我代替空集的零值。

0

@user.relevant_committee_ids = params[:user].try(:[], :relevant_committee_ids) || []

相關問題