0

f.select 옵션이있는 양식이 있습니다. 회사 이름을 옵션에서 선택하면 회사 ID와 회사 이름을 추가하려고합니다. f.select 코드 줄에 여러 속성을 추가 할 수 있습니까?레일 f.select 동시에 이름을 저장하십시오

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

나는 또한 내에 회사 명을 할당 할 : 이것은 내 코드는 모습입니다 COMPANYNAME 속성,하지만 ID는 현재 저장되는 유일한 것입니다.

감사합니다.

답변

0

나는 이것을 위해 연관성을 사용할 수 있다고 생각합니다. 아래의 2 가지 모델이 있어야합니다.

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에 추가 params[:your_object][:companyName]해야합니다. 예 :

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

데 도움을줍니다

희망 아무것도하기 전에 client_id이 같은 객체에 있는지 확인하고 허용하고 companyName 속성에 동일 적용

관련 문제