我正在从一个表单中检索控制器中的一个参数,我想从中删除一个哈希并放入一个变量供以后使用。
让我们假设该参数包含以下内容:
@form_data = params[:project] // <-- :id, :title, :description, :members
':members'是一个数组(从复选框中检索),我希望将该数组放入一个新变量供以后使用,它应该从param中删除。
@members // <-- should contain :members
@project = Project.new(params[:project]) // <-- ':members' is removed
怎么可以这样做?
答案 0 :(得分:7)
您可以使用delete方法
@members = params[:project].delete(:members)
@project = Project.new(params[:project])
答案 1 :(得分: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])
答案 2 :(得分: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
:)