2

Ruby(1.9.3)on Rails(3.1)アプリケーションで次のビューコードを使用して、タスクの所有者を編集しています。

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

これにより、次の選択ドロップダウンが生成されます。

ここに画像の説明を入力してください

first_nameユーザーのとを表示するように指示するにはどうすればよいlast_nameですか?

ノート:

タスクは、コラボレーションに属するリストに属します。

4

2 に答える 2

5

どうやら、task.list.collaborators[[key、value]、[key、value]]のようにネストされた配列形式である必要があります。それを行う簡単な方法:

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

または、次のようにすることもできます。表示したい方法をUserに追加します。

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

次に、:label_methodパラメーターと:value_methodパラメーターを使用します。

f.input :owner, 
  collection: task.list.collaborators, 
  label_method: :select_label, 
  value_method: :id
于 2012-04-03T03:50:47.657 に答える
0

#to_sでメソッドを定義することもできますUser

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

そうすれば、コレクションは次のようになります。

task.list.collaborators.map { |user| [user.id, user] }
于 2015-06-09T13:41:14.680 に答える