collection_select显示多个对象属性?

时间:2016-08-28 09:27:22

标签: ruby-on-rails ruby

除了展示挑战name之外。我还想在deadline旁边显示name

例如,它看起来像这样:

Visit London 09/09/16
Make $1,000,000 10/15/18
Knit a Scarf 01/11/19

而不仅仅是这个:

enter image description here

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id,:name, include_blank: true %>

2 个答案:

答案 0 :(得分:1)

name_with_deadline

中定义方法challenge.rb
def name_with_deadline
  "#{name} #{deadline}"
end

然后将此方法用作集合中的标签。

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id, :name_with_deadline, include_blank: true %>

name_with_deadline方法将调用集合中的每个对象来检索标签文本。

希望这有帮助!

答案 1 :(得分:1)

您可以为模型添加虚拟属性,如下所示:

def name_deadline
 "#{name} #{deadline}"
end

<强> collection_select:

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id,:name_deadline, include_blank: true %>