使用数组输入提交表单 - Rails

时间:2017-07-17 11:19:59

标签: ruby-on-rails ruby

我有一个名为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接受多个选择值?

1 个答案:

答案 0 :(得分:0)

看起来你可能需要另外一对括号,试试这个:

<%= f.select :access, options_for_select(custodian_profiles), {}, {:multiple => true, :class => "form-control #{error_class}", include_blank: true } %>

还要确保您的custodian_profiles变量返回一个数组。希望有所帮助。