2012-12-13 49 views
2

我想檢查我看到的行爲是否確實是我認爲的行爲。是軌道創建一個新的參數[:模型]哈希?

我已經搜索了答案,但找不到任何確認這是預期行爲的文檔。

我使用骨幹0.9.2.1和Rails 3.2.3

當我救我骨幹模型,我在看的HTTP頭,看到它發送一個JSON表示,例如

{"title":"I think...","id":2,...} 

控制器裏面,我一直一心一意缺席使用PARAMS [:意見]這奇怪的是工作的罰款,但現在我已經打了一個掛鉤,而且我注意到我的PARAMS哈希實際上是

{"title" => "I think...", 
"id" => 2 
"opinion" => {"title" => "I think ..."}, 
... 

(之所以我碰到順利是id存在於參數[:id]中,而不是params [:opinion] [:id]

在我看來,任何與attr_accessible在控制器方法被調用之前被映射到這個params [:opinion]散列。

該模型當然是Opinion。 控制器被稱爲opinion_controller並正在通過這條路線到達:

resources :stories, :controller => 'opinions' 

(重新命名一些事情的過程)

這是預期的行爲? 有人可以指向我可以閱讀的文檔嗎?

+0

是否使用[wrap_parameters](HTTP ://api.rubyonrails.org/classes/ActionController/ParamsWrapper/ClassMethods.html#method-i-wrap_parameters)在您的應用程序? –

+0

啊,我看到這是在我的配置/初始化/ wrap_parameters.rb 我沒有故意設置它,但我想一個默認的軌道應用程序包括? 謝謝! – ChristopherJ

回答

2

是的,我遇到了同樣的事情,想知道wtf。 Rails自動包裝它,就像你看到的一樣。變化: https://github.com/rails/rails/pull/359

編輯: 從API文檔: http://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html

By default, if you don’t specify the key in which the parameters would be wrapped to, ParamsWrapper will actually try to determine if there’s a model related to it or not.

這個答案還介紹得好: https://stackoverflow.com/a/9134057/341692

+0

謝謝,除了在github以外的其他地方都有記錄嗎? – ChristopherJ

+0

其實剛剛找到了api文檔:http://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html「默認情況下,如果你沒有指定參數將被包裝到的關鍵字,ParamsWrapper實際上會嘗試以確定是否有與之相關的模型。「 – hajpoj

相關問題