收集选择has_many通过

当表单重新显示时,如何获取集合选择以显示所选的已提交值? 例如,如果其他字段未validation,则多选框应显示所选项目

 true, :class => 'chosens-select', :name=>'coupon[activity_ids][]'}) %> 

像这样的东西会。

 <%= collection_select(:coupon, :activity_ids,current_user.provider.activities, :id, :name, {:selected => @coupon.activity_ids}, {:multiple => true, :class => 'chosens-select', :name=>'coupon[activity_ids][]'}) %> 

我建议用户使用SimpleForm 。 你会做的:

 simple_form_for(my_model) do |f| f.association :activities f.button :submit end 

它将简化您的所有表格。

感谢那些发布答案的人,它促使我放弃“修复”表格并再次看我的控制器。 事实certificate我在params声明中犯了一个错误:

 def coupon_params params.require(:coupon).permit(:id, :provider_id, :code, :max_uses, :max_uses_per_customer, :name, :expires_at, :dollar_discount, :percent_discount, :starts_at, :activity_ids => {}) end 

它应该在哪里

 def coupon_params params.require(:coupon).permit(:id, :provider_id, :code, :max_uses, :max_uses_per_customer, :name, :expires_at, :dollar_discount, :percent_discount, :starts_at, :activity_ids => []) end 

指出不同? activity_ids应该是一个数组,而不是一个哈希

 :activity_ids => []