如何使用 collection_select 在集合的每个元素中显示更多属性

How to show more attributes in each element of the collection with collection_select

我有这个简单的形式:

= simple_form_for(Note.new, remote: true) do |f|       
  = f.collection_select :dance_id, current_user.dances.includes(:style).all,     
   :id, :style_name, {prompt: "Please select dance"}, {class: "form-control"}

生成的代码:

<select class="form-control" name="note[dance_id]" id="note_dance_id">
    <option value="">Please select dance</option> 
    <option value="39">Adowa Dance (Ghana)</option> 
    <option value="38">Adowa Dance (Ghana)</option> 
    <option value="37">Tango (Argentina)</option>
</select>

效果很好,因为它显示了我想要的 style_name 的所有舞蹈。但是我想区分两种舞蹈,并且还想在集合中的每支舞蹈旁边显示级别和日期,因为有许多舞蹈名称相同,风格相同! 请帮忙。使用简单的表单助手有更好的方法吗?

如讨论中所述,您需要在模型的 rb 文件中声明一个方法,如下所示:

def custom_name
"#{style.name}. #{date}"
end

并将:style_name参数更改为:custom_name