: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
我正在尝试在我的表单中使用 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