我需要将网址中的一些参数从第三方服务传递到User#new
。
由于参数较强,控制器需要以用户[名称],用户[电子邮件]的形式提供参数。但是,此第三方服务阻止在param键中使用方括号。
最简单的Rails-y方法是什么?也许在Rails路由器?在请求被控制器拒绝之前,我想将email=abc@example.com
转换为user[email]=abc@example.com
。
思想?
谢谢!
答案 0 :(得分:0)
我认为只需要一些简单的手动解决方案就可以了。
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] || {}).reverse_merge(params.keep_if { |k,v| k.to_sym.in? permitted_params }