我使用的是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
非常感谢任何和所有输入。
答案 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)
现在一切都运转良好。