2011-11-27 60 views
0

目前我在做我的第一个iPhone应用程序与我的一个朋友的过程。他正在编写前端,而我在Rails中完成后端。问题是现在他正试图必要的属性发送给我一个岗位请求,但不使用嵌套的哈希,这意味着是所有的属性将被直接放在PARAMS而不是在“苏巴”。所以更具体地说,我想要做的就是能够用一些参数方法来检索所有这些属性。我知道PARAMS默认包含其他信息这对我来说是不相关的,如PARAMS [:控制器]等。我已经叫所有的属性一样的模型属性,所以我想应该是可以传递下去他们很容易在至少这是可能的在PHP中,所以我希望Rails有一个简单的方法来做到这一点。如何检索PARAMS所有属性,而不使用嵌套的哈希?

因此,例如,而不是在控制器中使用User.new(params [:user])我有用户属性不是在嵌套散列参数[:用户],但在params直接,所以我怎么能得到所有的他们一次?并把它们放在User.new()中?

回答

1

我找到了解决我的问题的方法。我错过了在attr_accessible添加到我的模型,是什么最初返回的错误,当我试图运行类似的代码:User.new(PARAMS),其已经通过与POST请求多个属性。

的解决方案是非常简单的,也许太简单了,但由于这是Rails中我第一次真正应用我觉得这可能是有类似问题的其他新手有帮助。

0

如果你想只通过PARAMS新的更有限的版本,你应该能够做到像下面这样:

params = { item1: 'value1', item2: 'value2', item3: 'value3' } 
params.delete(:item2) 
params # will now be {:item1=>"value1", :item3=>"value3"} 

另见this使用,除了你提到的解释在你的评论。 ,除了一个例子是这样的:

params.except(:ssn, :controller, :action, :middle_name) 
0

您可以attribute_names方法获取从一个新创建的对象的可用属性。所以在这个特例中:

u = User.create 
u.attributes = params.reject { |key,value| !u.attribute_names.include?(key) 
u.save