我有一个名为access
的列,它设置为array: true
。但是我在提交表格方面遇到了麻烦。这是我的控制器:
def create
@topic = Topic.find_by(slug: params[:topic_id])
@navigation_item = NavigationItem.create(navigation_item_params)
if @navigation_item.persisted?
redirect_to topic_path(params[:topic_id])
else
render :new
end
end
private
def navigation_item_params
params.require(:navigation_item).permit(
:title,
:url,
:thumbnail_id,
:access,
:category_id,
:tag
)
end
控制器中非常标准的东西
<%= form.select :access, options_for_select(custodian_profiles), { include_blank: true, multiple: true }, class: "form-control #{error_class}" %>
我在场上也有真实的验证。
因此,当我尝试提交表单时,access
字段作为空数组返回,它看起来像#=> access: []
,显然无法通过验证检查而无效。如何使用rails接受多个选择值?
答案 0 :(得分:0)
看起来你可能需要另外一对括号,试试这个:
<%= f.select :access, options_for_select(custodian_profiles), {}, {:multiple => true, :class => "form-control #{error_class}", include_blank: true } %>
还要确保您的custodian_profiles
变量返回一个数组。希望有所帮助。