Ruby on rails Rails:在请求命中控制器之前操作URL查询参数键

Ruby on rails Rails:在请求命中控制器之前操作URL查询参数键,ruby-on-rails,ruby-on-rails-4,query-string,strong-parameters,url-parameters,Ruby On Rails,Ruby On Rails 4,Query String,Strong Parameters,Url Parameters,我需要将url中的一些参数从第三方服务传递到User\new 由于强参数,控制器希望参数的格式为user[name],user[email]。但是,此第三方服务阻止在参数密钥中使用方括号 解决这个问题最简单的Rails-y方法是什么?也许在Rails路由器中?我想收电子邮件=abc@example.com并将其转换为用户[电子邮件]=abc@example.com在请求被控制器拒绝之前 想法 谢谢 我认为简单的手动解决方案是最好的 def user_params permitted_para

我需要将url中的一些参数从第三方服务传递到
User\new

由于强参数,控制器希望参数的格式为user[name],user[email]。但是,此第三方服务阻止在参数密钥中使用方括号

解决这个问题最简单的Rails-y方法是什么?也许在Rails路由器中?我想收
电子邮件=abc@example.com
并将其转换为
用户[电子邮件]=abc@example.com
在请求被控制器拒绝之前

想法


谢谢

我认为简单的手动解决方案是最好的

def user_params
  permitted_params = [:name, :email, :first_name, :last_name]
  params[:user].reverse_merge!(params.keep_if { |k,v| k.to_sym.in? permitted_params })
  params.require(:user).permit(*permitted_params)
end
如果
params[:user]
为零,则可以执行以下操作之一:
params[:user]| |={}
合并前的某个地方


或者这个:
params[:user]=(params[:user]| |{})。反向合并(params.keep_如果{k,v | k.to _sym.in?允许_params}

我认为Rails-y应该在控制器中更清楚地告诉未来的开发人员这是怎么回事。我喜欢这个想法,但我得到了未定义的方法“反向合并!”,用于nil:NilClass。尝试放置
参数[:user]| |={}
,但也不起作用…仍在胡闹…仅供参考-添加
参数[:user]| |={}
反向合并前的一行仍然抛出:
参数丢失或值为空:user
。查看参数获得用户散列的结果,然后我认为
保留_if
会将其清除。将尝试向允许的参数添加
:user