2011-11-27 59 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