0

我有一个 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[] 的单个元素传递吗?)

4

1 回答 1

0

不知道它是否有帮助,但我只是在 application_controller 创建一个方法:

def user_params
  return params.reject {|k,v| [:format, :action, :controller].member?(k)}
end

因此,在整个代码中,您可以只user_params在不需要 ActionPack 参数时使用

于 2012-08-06T16:46:36.480 回答