2017-02-03 42 views
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 

回答

1

而是建立一個新的公司,並接受新公司的嵌套屬性,只允許選擇一個company_id的您的User型號中的accepts_nested_attributes_for :company行。

+0

嘿斯皮克曼,謝謝你的回覆!如果我想要在公司不存在的情況下添加新公司的選項,請從預定義的下拉列表中選擇一家公司,我將如何修改相應的代碼? –

+0

@KengHong:請提出有關更改或擴展要求的新問題。因爲原來的問題解決了。而一個新的問題會得到更多的讀者的關注,而不是這個評論。 – spickermann

相關問題