代码之家  ›  专栏  ›  技术社区  ›  american-ninja-warrior

如何将一个值从一个参数分配到一个ActionController::Parameters对象中

  •  -1
  • american-ninja-warrior  · 技术社区  · 7 年前

    如何将参数中的值指定给键 ActionController::Parameters 对象

    我尝试的是:

    (byebug) foo_inquiry_params
    <ActionController::Parameters {"email"=>"fds@fsdgf.com", "subject"=>"fds", "description"=>"fds"} permitted: true>
    (byebug) name_inquiry_params["user_id"] = 5
    5
    (byebug) foo_inquiry_params
    <ActionController::Parameters {"email"=>"fds@fsdgf.com", "subject"=>"fds", "description"=>"fds"} permitted: true>
    (byebug) 
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   NM Pennypacker    5 年前

    ActionController::Parameters 不能像普通散列一样对待,所以如果你想打电话 .merge 在上面,您必须首先将参数转换为哈希:

    ActionController::Parameters.new({foo: 'bar'}).to_h.merge({bar: 'baz'})

    当我必须做这类事情时,我发现自己使用的工作流是:

    def update
      attrs_to_update = thing_params.to_h.merge(one_more_attribute: 'some value')
      @thing.update(attrs_to_update)
    end
    
    def thing_params
      params.require(:thing).permit(:some_attribute, :another_attribute)
    end