:name:Symbol 的未定义方法“merge”

undefined method `merge' for :name:Symbol

我正在尝试在我的表单中使用 select 框。当我这样尝试时

<%= s_form.select :experience_category_id, ExperienceCategory.all, :name,:id%> 

它给我错误

undefined method merge for :name:Symbol.

可能是因为我必须使用签名 s_form.collection_select。但它不允许我使用多个 selection。

当我这样尝试时

<%= s_form.select(:experience_category_id, ExperienceCategory.all {|p| [ p.name, p.id ] },
                                             { :prompt => "Please select"},
                                             { :multiple => true, :size => ExperienceCategory.all.count } )%>

Supplier_controller

def new
    @user = User.new
    @user.build_supplier
    @user.supplier.build_natural_address
  end
def create
    @user = User.new(user_params)
    @user.role = "supplier"

      if @user.save
        UserMailer.account_activation(@user).deliver_now
        flash[:notice] = "Please check your email to activate your account"
        redirect_to root_url
      else
        render :new
      end

  end

。 . .

def user_params
      params.require(:user).permit(:email, :first_name, :last_name, :password, :password_confirmation, supplier_attributes: [:id, :company_name, :insurance_document, :profile_image, :national,:experience_category_id, natural_address_attributes: [:addressable_id, :addressable_scope, :addressable_type, :address_line_1, :address_line_2, :address_line_3, :town, :county, :postcode]])
    end

供应商已创建 我看不到服务器有任何问题,但没有 :experience_catagory_id。 它不会引发错误,但 :experience_category_id 保持 nil。可能是什么问题?我该如何解决这个问题?谢谢

<%= f.select(:experience_category_id, ExperienceCategory.find(:all).collect {|u| [u.name, u.id]}, :prompt => 'Select') %>

this link 是解决您的问题的很好的示例参考

对于你的问题,如果你想选择一个选项

<%= s_form.collection_select :experience_category_id, ExperienceCategory.all, :id, :name, :prompt => 'Select' %>

选择题

<%= s_form.collection_select :experience_category_ids, ExperienceCategory.all, :id, :name, {}, {multiple: true'} %>

在你的控制器中请特别注意在你的strong_parameters中它应该是一个数组

def user_params
  params.require(:user).permit(
    :your_other_fields,
    :experience_category_ids => []
end

您没有按照 rails 使用正确的格式 html 帮助

使用这个

<%= f.select(:product_category_id, product.find(:all).collect {|u| [u.name, u.id]}, :prompt => 'Select') %>

select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {include_blank: 'None'})

如文档中所示 Rails helpers