まず、私のモデルは次のとおりです。
class User < ActiveRecord::Base
has_one :event
has_one :user_details, :dependent => :destroy
accepts_nested_attributes_for :user_details, :event
end
class UserDetails < ActiveRecord::Base
belongs_to :user
def full_name
[self.first_name, self.last_name].compact.join(' ')
end
end
class Event < ActiveRecord::Base
belongs_to :user
end
そして、私は私のビューの1つにこの行を持っています
<%= collection_select(:event, :user_id, User.all, :id, :email) %>
問題なく動作し、すべてのユーザーのメールがドロップダウン リストに表示されます。しかし、表示したいのは、user_details モデルの一部であるドロップダウン リストのユーザー full_name です。
どうやってやるの?
# basically i need to change :email to something like :user_details.full_name, but i'm not sure how.
<%= collection_select(:event, :user_id, User.all, :id, :email) %>
編集
私が試してみました:
# undefined method `full_name' for :user_details:Symbol
<%= collection_select(:event, :user_id, User.all, :id, :user_details.full_name) %>
# This shows the dropdown with a bunch of UserDetails objects aka #<UserDetails:asfjoisdfa>
<%= collection_select(:event, :user_id, User.all, :id, :user_details) %>
# undefined method `full_name' for #<User:0x007ff18bf0c470>
<%= collection_select(:event, :user_id, User.all, :id, :full_name) %>