0
大家好我想使用Ruby on Rails設計創建一個用戶belongs_to的新公司。雖然我可以創建關聯公司對象(在fields_for下),但即使從預定義的下拉列表中選擇一個選項,也會創建具有重複名稱的新公司對象。正確的,我應該能夠從下拉列表中選擇選項。如何修改我的代碼,以便我可以從下拉列表中選擇並使用選項,而不是創建具有重複名稱的新對象?重複名稱正在創建,即使當我從預定義的下拉列表中選擇一個選項
我的代碼如下所示: - :
# 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
,並刪除
#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
嘿斯皮克曼,謝謝你的回覆!如果我想要在公司不存在的情況下添加新公司的選項,請從預定義的下拉列表中選擇一家公司,我將如何修改相應的代碼? –
@KengHong:請提出有關更改或擴展要求的新問題。因爲原來的問題解決了。而一個新的問題會得到更多的讀者的關注,而不是這個評論。 – spickermann