1

我正在从表单中检索控制器中的参数,我想从中删除哈希并放入变量以供以后使用。

假设参数包括以下内容:

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

':members' 是一个数组(从复选框中检索),我希望将该数组放入一个新变量中以供以后使用,并且应该从参数中删除它。

@members // <-- should contain :members 

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

怎么可能做到这一点?

4

3 回答 3

7

您可以使用删除方法

@members = params[:project].delete(:members)
@project = Project.new(params[:project])
于 2013-02-09T17:03:26.783 回答
5

为此,您至少有两个选择。

1)初始化项目时忽略成员键

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

2) 从 params 对象中删除 members 键

@members = params[:project].delete(:members)
@project = Project.new(params[:project])
于 2013-02-09T17:04:24.007 回答
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

:)

于 2013-02-09T17:06:56.813 回答