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