Ruby on rails Rails:在请求命中控制器之前操作URL查询参数键
我需要将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
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