如何将用户参数与Action Pack参数分开?

时间:2012-08-06 16:30:13

标签: ruby-on-rails-3 controller actionpack

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

1 个答案:

答案 0 :(得分:0)

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

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

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