Ruby on rails 即使我从预定义的下拉列表中选择了一个选项,也会创建重复的名称
大家好,我正在尝试使用RubyonRails设计来创建一个用户所属的新公司。虽然我可以在字段_下为创建关联的公司对象,但即使我从预定义的下拉列表中选择了一个选项,也会创建具有重复名称的新公司对象。没错,我应该能够从下拉列表中选择该选项。如何修改代码,以便从下拉列表中选择并使用选项,而不是创建具有重复名称的新对象 我的代码如下所示:-Ruby on rails 即使我从预定义的下拉列表中选择了一个选项,也会创建重复的名称,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,大家好,我正在尝试使用RubyonRails设计来创建一个用户所属的新公司。虽然我可以在字段_下为创建关联的公司对象,但即使我从预定义的下拉列表中选择了一个选项,也会创建具有重复名称的新公司对象。没错,我应该能够从下拉列表中选择该选项。如何修改代码,以便从下拉列表中选择并使用选项,而不是创建具有重复名称的新对象 我的代码如下所示:- #new.html.erb <% resource.build_company %> <%= form_for resource, as: re
#new.html.erb
<% resource.build_company %>
<%= form_for resource, as: resource_name, url: registration_path(resource_name), :html => {class: "ui small form"} do |f| %>
<%= f.fields_for :company do |builder| %>
<%= builder.select :name, Company.all.collect{ |p| [p.name, p.id] }, {prompt: "Company"}, :class => "company_options ui fluid search selection dropdown" %>
<%end%>
<%= f.submit "Sign up" %>
#companies_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
protected
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:lastname, :firstname,company_attributes:[:name]])
end
end
#user.rb
class User < ApplicationRecord
belongs_to :company
accepts_nested_attributes_for :company
end
#company.rb
class Company < ApplicationRecord
has_many :users
end
不必构建新公司并接受新公司的嵌套属性,只需允许选择公司id:
并从您的用户模型中删除:company line的accepts_nested_attributes_.hey spickerman,谢谢您的回复!如果我想在公司不存在的情况下选择添加一个新公司,或者从预定义的下拉列表中选择一个公司,我将如何相应地修改代码?@KengHong:请针对更改或扩展的要求提出一个新问题。因为原来的问题解决了。一个新的问题会比这篇评论引起更多读者的注意。
# in your view
<%= f.collection_select :company_id, Company.all, :id, :name %>
# in your controller
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:lastname, :firstname, :company_id])
end