2014-10-07 53 views
0

我有一個Products類,產品對零個或多個角色可見。所以我創建了一個稱爲content_roles的多態模型,它存儲角色id和content_id(它將是product_id或event_id)以及content_type(產品,事件等)。接受nested_form中複選框的數據並使用複選框中的數據創建記錄

我使用nested_form創業板接受角色ID(使用check_box)存儲在content_role

產品和角色關係,我所面臨的問題是我不能夠創造出content_role紀錄。在我的日誌我得到未經許可參數:ROLE_ID

參數:{ 「UTF8」=> 「✓」, 「authenticity_token」=> 「xxxxxxxxxxxxxxxxxxxxdLH99ZWLrf8dgT3gcBops =」, 「產品」=> { 「PRODUCT_NAME」=>「一些產品「,」product_description「=>」某些產品說明「,」content_roles_attributes「=> {」role_id「=> [」1「,」2「,」「]}},」commit「=>」創建產品「}}

在我看來

我已經寫

= f.simple_fields_for :content_roles_attributes do |role| 
    = role.input :role_id,label: "visible to", as: :check_boxes,label: "Role",collection: Role.all,:required=>true 

控制器允許PARAMS看起來像

def product_params 
params.require(:product).permit(:product_description,:product_name, 
content_roles_attributes: [:role_id,:id], 
multimedia_attributes:[:asset,:_destroy,:id]) 
end 

產品型號看起來像

class Product  
    has_many :content_roles, as: :content 
    has_many :multimedia ,as: :storable 
    # Nested attributes 
    accepts_nested_attributes_for :multimedia 
    accepts_nested_attributes_for :content_roles 
end 

,這是content_role模型

回答

0

試着改變你的product_params到:

def product_params 
    params.require(:product).permit(
    :product_description, 
    :product_name, 
    content_roles_attributes: [:id, role_id: []], 
    multimedia_attributes: [:asset, :_destroy,:id] 
) 
end 
+0

的建議我嘗試設置ROLE_ID到一個數組,它給了我一個TypeError(沒有隱式的轉化將字符串轉換爲整數)。任何建議如何解決? – level0 2014-10-07 18:36:29

+0

@Adil - 這是另一個問題,您需要用一個確切的錯誤信息和一個回溯和相關代碼來更新當前的問題(最有可能是控制器操作) – BroiSatse 2014-10-07 18:40:14