2017-04-15 43 views
0

我有一個帶有f.select選項的窗體。當從選項中選擇公司名稱時,我想添加公司ID和公司名稱。是否有可能在f.select代碼行中添加多個屬性?這是我的代碼的外觀:Rails f.select同時保存一個姓名

<div class="field"> 
<%= f.label 'Client' %> 
<%= f.select :client_id, Client.all.collect { |c| [ c.companyName, c.id ] } %> 

我想公司名稱也分配給我的:公司的屬性,但ID是被保存,現在唯一的事情。

謝謝。

回答

0

我認爲你可以使用這種關聯。你應該有兩個模型如下。

class Company < ApplicationRecord 
has_many :clients 
end 

class Client < ApplicationRecord 
belongs_to :company 
end 

你應該在視圖中改用可變渲染所有的客戶名單與此

<%= f.select :client_id, @clients.collect { |client| [ client.name, client.id] } %> 

控制器:

@clients = Client.all 

在提交client_id將被傳遞給控制器​​。然後,您可以找到與客戶端和其他邏輯關聯的公司。

client = Client.find(params[:client_id]) 
company = client.company 
# etc .. 
0

在表單提交的控制器操作中,您可以在保存或更新記錄之前寫入。

params[:your_object][:companyName]=Client.find_by(id: params[:your_object][:client_id]).companyName 

記住一個附加params[:your_object][:companyName]你強PARAMS。例如

params.require(:your_object).permit(:client_id, ... , :companyName) 

任何東西之前,確保您的client_id是同一個對象,並允許並適用於相同屬性companyName

希望這有助於

相關問題