抱歉發佈似乎是一個常問的問題,但我已經努力了兩天而沒有離得更近。Rails 4沒有通過允許的參數
我正在運行Rails 4.0.1(包括Devise,CanCan等),並且擁有帶有HABTM users_roles表(由自去除的rolify創建的)的用戶和角色模型。
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
attr_reader :user_tokens
def user_tokens=(ids)
self.user_ids = ids.split(",")
end
end
我提交的表單數據是:
"role"=>{"name"=>"disabled", "resource_id"=>"", "resource_type"=>"Phone", "user_tokens"=>["", "3"]}
(不知道在哪裏空字符串從何而來,它不是在選項列表,但嘿,歡迎Rails的)。
我的問題是獲取user_tokens數據傳遞到控制器中的相應變量。
有很多帖子的提示正確的格式(例如,how to permit an array with strong parameters)
如果我指定的允許的參數因此:
params.require(:role).permit(:name, :resource_id, :resource_type, :user_tokens => [])
我得到沒有其他細節「500內部服務器錯誤」 。
如果我指定的許可證爲
params.require(:role).permit(:name, :resource_id, :resource_type, user_tokens: [])
我沒有得到任何錯誤(在開發日誌中沒有未經許可的參數),但的user_tokens陣列沒有在@Role通過。
如果我通過一個控制檯運行這種情況下,我得到:
params = ActionController::Parameters.new(:role => {:resource_id => "", :resource_type => "Phone", :user_tokens => ["", "3"]})
params.require(:role).permit(:name, :resource_id, :resource_type, user_tokens: [])
=> {"resource_id"=>"", "resource_type"=>"Phone", "user_tokens"=>["", "3"]}
params.require(:role).permit(:user_tokens).permitted?
Unpermitted parameters: resource_id, resource_type, user_tokens
=> true
我堅持到哪兒,我應該嘗試尋找下一個。