2

Ruby (1.9.3) on Rails (3.1) 응용 프로그램에서 다음과 같은보기 코드를 사용하여 작업 소유자를 편집합니다.best_in_place : collection

=simple_form_for task do |f| 
    =f.input :owner, collection: task.list.collaborators 

다음 선택 드롭 다운이 생성됩니다.

enter image description here

어떻게 그것이 first_name 사용자의 last_name 표시 알 수 있습니까?

참고 :

작업은 협력에 속하는 목록에 속한다.

답변

5

분명히 task.list.collaborators은 [[키, 값], [키, 값]]과 같이 중첩 된 배열 형식이어야합니다. 간단한 방법 :

task.list.collaborators.map{|user| [user.id, "#{user.first_name} #{user.last_name}"]} 

또는 다음을 수행 할 수 있습니다. 당신이 원하는 것대로 표시 사용하는 방법을 추가 label_method과 : value_method 매개 변수 :

class User 
    def select_label 
    "#{user.first_name} #{user.last_name}" 
    end 
end 

이 그 다음을 사용 또한도에 #to_s 방법을 정의 할 수

f.input :owner, 
    collection: task.list.collaborators, 
    label_method: :select_label, 
    value_method: :id 
+0

흠, 그만큼 가까워. 여기를 참조하십시오 : http://b.gadoci.me/3K0N0o2Z0j02091t2h0Y – bgadoci

+0

우리가 옳습니다. 나는 바보 같은 짓을하고 있었다. 감사. – bgadoci

+0

다른 옵션이 추가되어 더 깨끗하고 재사용 할 수 있습니다. – PinnyM

0

User

class User 
    def to_s 
    "#{user.first_name} #{user.last_name}" 
    end 
end 

컬렉션을 다음과 같이 지정할 수 있습니다.

task.list.collaborators.map { |user| [user.id, user] }