2013-02-09 60 views
1

我從表單中檢索控制器中的一個參數,我想從中刪除一個散列並放入一個變量以供以後使用。從param中刪除散列(數組)並將其放入變量

假設帕拉姆包括以下內容:

@form_data = params[:project] // <-- :id, :title, :description, :members 

「:成員包括(由複選框檢索)一個數組,我想放在該數組中,供以後使用一個新的變量,它應該從參數中刪除。

@members // <-- should contain :members 

@project = Project.new(params[:project]) // <-- ':members' is removed 

這怎麼辦?

回答

7

您可以使用delete方法

@members = params[:project].delete(:members) 
@project = Project.new(params[:project]) 
4

您有這至少有兩個選項。

1)忽略成員的關鍵,當你初始化項目

@members = params[:project][:members] 
@project = Project.new(params[:project].except(:members)) 

2)刪除成員的關鍵,從params對象

@members = params[:project].delete(:members) 
@project = Project.new(params[:project]) 
1

你可以這樣做:

before_filter :edit_params_hash, :only => [:create] 


def edit_params_hash 
     @members = params[:projects][:members] if params[:projects][:members].present? 
     params[:projects][:members] ||= nil 
end 

然後創建使用

def create 
    @project = Project.new(params[:project]) 
    @project.save 
    @project.members = @members 
end 

:)

相關問題