【问题标题】:Remove hash (array) from param and put in variable从参数中删除哈希(数组)并放入变量
【发布时间】:2013-01-25 06:33:26
【问题描述】:

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

假设参数包括以下内容:

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

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

@members // <-- should contain :members 

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

这是怎么做到的?

【问题讨论】:

    标签: ruby-on-rails arrays ruby-on-rails-3 variables hash


    【解决方案1】:

    你可以使用delete方法

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

    【讨论】:

      【解决方案2】:

      您至少有两种选择。

      1) 初始化项目时忽略 members 键

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

      2) 从 params 对象中删除 members 键

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

      【讨论】:

        【解决方案3】:

        你可以这样做:

         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
        

        :)

        【讨论】:

          猜你喜欢
          • 2014-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-13
          • 2020-01-20
          • 1970-01-01
          • 1970-01-01
          • 2018-07-27
          相关资源
          最近更新 更多