Rails 4复选框:未保存到数据库

时间:2015-12-03 17:04:32

标签: ruby-on-rails checkbox

我使用的是Rails 4,我有3个模型:属性,类别和分类。

该应用程序位于:https://github.com/ornerymoose/PropertiesAndCategories

这个想法:你可以更新一个属性,并有6个类别(6个复选框)可供选择。

我遇到了这个SO post,这很有帮助但是唉,我的价值观仍然没有得到拯救。

当我点击更新按钮更新属性时:服务器日志(如果我选择复选框3 4和5)将是:

**Processing by PropertiesController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Dcgy+3qBF4JLeu5MMATyqOc+jWyILXTfgURbqn+Ez8E2ru3rpzgPBqKDPWsy/QelQuQgOczdC8xDsOnnwSDAnQ==", "property"=>{"name"=>"Vizcaya", "category_id"=>["3", "4", "5", ""]}, "commit"=>"Update Property", "id"=>"6"}**

如果我启动rails控制台并检查^ above属性,则category_id设置为nil。为什么是这样?我认为我的强大参数在properties_controller中是正确的:

def property_params
  params.require(:property).permit(:name, :category_id => [])
end

非常感谢任何和所有输入。

2 个答案:

答案 0 :(得分:0)

为什么你有“:category_id => []”?我很确定如果你摆脱了“=> []”部分并且只是对待:category_id就像:name(如下所示),它应该可以工作!

def property_params
  params.require(:property).permit(:name, :category_id)
end

答案 1 :(得分:0)

好的,第一个修复程序位于属性控制器中:

def property_params
  params.require(:property).permit(:name, :category_ids => [])
end

我最初使用:category_id => []并没有在Rails服务器日志中返回错误,但是没有将复选框值保存到数据库中。

然后第二个修复是修复collection_check_boxes个参数。最初我有:category_id,但我完全忽略了它必须是:category_ids

<%= collection_check_boxes(:property, :category_ids, Category.all, :id, :name)

现在一切都运转良好。