2013-03-13 149 views
4

這是奇怪的我,所以我只是好奇,如果別人遇到了這一點:不允許參數?

我有以下幾點:

def credential_params 
    params.required(:credential).permit(:name,:agent_ids) 
end 

在我的控制器創建和更新操作我使用質量分配上述參數調用...

@credential.update_attributes(credential_params) 

但我仍然得到Unpermitted parameters: agent_ids

如果我更改爲params.required(:credential).permit!(即允許所有)當然它的作品。

我覺得我必須在這裏俯瞰一些明顯的疑難雜症......誰知道它可能是什麼?

+0

不應該說是'require'? – jvnill 2013-03-13 02:52:44

+0

@jvnill - 看完文檔後,應該是,但你知道嗎?它也按'必需'的方式工作。我不知道這是否是一個錯誤或功能... – Andrew 2013-03-13 02:55:14

+0

@jvnill:這是一個特點,'required'是'require'的別名,看近來源:https://github.com/rails/strong_parameters/blob/主/ lib目錄/ action_controller/parameters.rb#L58 – Andrew 2013-03-13 02:59:16

回答

5

嘗試

params.require(:credential).permit(:name, { :agent_ids => [] }) 
+0

我認爲我們發佈大約在同一時間,但我會給你答案,因爲它不值得任何分給我:)感謝您抽空看看! – Andrew 2013-03-13 03:06:11

+0

啊謝謝。是的,它看起來像幾秒鐘的差異。 – jvnill 2013-03-13 03:14:10

5

明白了。

數組是不是supported types之一:

允許的標量類型包括字符串,符號,NilClass,數值,TrueClass,FalseClass,日期,時間,日期時間,StringIO的,IO,ActionDispatch :: Http :: UploadedFile和Rack :: Test :: UploadedFile。

因此該解決方案是指定一個數組,像這樣:

params.require(:credential).permit(:name, :agent_ids => []) 

希望別人發現這很有用。