使用rails 5合并ActionController :: Parameters

时间:2016-01-05 09:02:27

标签: ruby-on-rails strong-parameters actioncontroller ruby-on-rails-5

在rails 4中,我可以合并! StrongParams,但因为rails 5(beta1)合并!不可用。哪个是在控制器中执行此操作的最佳方法

  params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
         params.merge!(city: "Los Angeles")

4 个答案:

答案 0 :(得分:5)

据我所知[{3}},您merge而非merge!。换句话说,似乎不可能修改哈希值。

以下代码可以使用:

params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
params = params.merge(city: "Los Angeles")

答案 1 :(得分:2)

params.merge!(城市:"洛杉矶")适用于Rails5.0.1

enter image description here

在Rails 5中:ActionController :: Parameters现在返回一个对象而不是一个哈希。

所以你必须使用params.permit(:city).to_h来访问城市。

有关ActionController :: Parameters如何在Rails5中运行的更多详细信息?

参考:http://www.rortuts.com/ruby-on-rails/rails5-actioncontrollerparameters/

答案 2 :(得分:0)

希望这对任何人都有帮助。

def comment_params
  params.require(:comment).permit(:title, :user_id, :color)
end

我想将color属性与我的自定义颜色代码或名称合并。所以动态合并颜色属性

像这样在轨道5中初始化params,

params = ActionController::Parameters.new(comment_params)
params = params.merge(color: "green")

答案 3 :(得分:0)

new_params = params.to_h.merge(city: "Los Angeles")