代码之家  ›  专栏  ›  技术社区  ›  Tintin81

为什么我要为actionController::Parameters错误获取未定义的方法“deep\u merge”?

  •  0
  • Tintin81  · 技术社区  · 8 年前

    在我的Rails 5应用程序中,我尝试在控制器中执行此操作:

      def create
        company_params = params.require(:company).permit(
          :name,
          :email,
          :people_attributes => [
            :first_name,
            :last_name
          ]
        ).deep_merge(
          :creator_id => current_user.id,
          :people_attributes => [
            :creator_id => current_user.id
          ]
        )
        @company = current_account.companies.build(company_params)
        if @company.save
          flash[:success] = "Company created."
          redirect_to companies_path
        else
          render :new
        end
      end
    

    但是,由于某种原因,我得到了这个错误:

    actionController::参数的未定义方法“deep_merge”:0x007FA24C39CFB0

    我这里缺什么?

    3 回复  |  直到 8 年前
        1
  •  3
  •   Sergio Tulentsev    8 年前

    params ActionController::Parameters

    params.methods.grep(/merge/)
    => [:reverse_merge!, :reverse_merge, :merge!, :merge]
    

    deep_merge

        2
  •  0
  •   Bernie Chiu    8 年前

    .to_hash.deep_merge

        3
  •  0
  •   Tintin81    8 年前

    deep_merge

      def create
        company_params = params.require(:company).permit(
          :name, 
          :email,
          :people_attributes => [
            :first_name,
            :last_name
          ]
        )
        @company = current_account.companies.build(company_params)
        @company.creator = current_user
        @person = @company.people.last
        @person.account = current_account
        @person.creator = current_user
        if @company.save
          flash[:success] = "Company created."
          redirect_to companies_path
        else
          render :new
        end
      end