我有一个Rails应用程序,其中用户参数都是通过带有JSON参数的RESTful API提供的。具体来说,没有客户端HTML表单,用户可以从中发布数据:它是原始JSON。
因此,要创建新的Car条目,用户可能会:
POST www.mysite.com/api/car
model=Ford&year=2012
在我的应用程序中,当我收到此消息时,Action Pack值与params []哈希中的用户值混合在一起,所以我得到:
params = {:model=>"Ford", :year=>"2012", :format=>"json", :action=>"create", :controller=>"api/cars"}
将用户生成的参数与Action Pack生成的参数分开的最佳方法是什么?我能想到的最好的是删除后者:
car_params = params.reject {|k,v| [:format, :action, :controller].member?(k)}
car = car.new(car_params)
但是闻起来不对劲。有没有更好的办法? (例如,我是否可以使用Action Pack将用户提供的参数封装到单个散列中并将其作为params []的单个元素传递?)
答案 0 :(得分:0)
不知道它是否有帮助,但我只是在application_controller中创建一个方法:
def user_params
return params.reject {|k,v| [:format, :action, :controller].member?(k)}
end
因此,在整个代码中,当您不想要ActionPack参数时,可以使用user_params