Ruby on rails 以简单形式获取嵌套模型的关联

Ruby on rails 以简单形式获取嵌套模型的关联,ruby-on-rails,ruby,simple-form,Ruby On Rails,Ruby,Simple Form,我不知道必须从另一个模型中获取关联和值的选择框。 例如,我有一个表“课程名称”来记录课程名称 <select class="select optional form-control" id="student_course_id" name="student[course_id]"><option value=""></option> <option value="3">#&lt;Course:0x00000105c23818&gt;

我不知道必须从另一个模型中获取关联和值的选择框。 例如,我有一个表“课程名称”来记录课程名称

<select class="select optional form-control" id="student_course_id" name="student[course_id]"><option value=""></option>
<option value="3">#&lt;Course:0x00000105c23818&gt;</option></select>
我有另一个表,它有另一个表course,它有更多的列和course\u name\u id

在这个简单表单的视图中,我必须为选择课程创建一个选择框

<%= simple_form_for(@student_profile) do |f|%>
    <% f.error_notification %>
    <div class="form-inputs">
        <%= f.association :course  %>
但此关联不显示课程名称

<select class="select optional form-control" id="student_course_id" name="student[course_id]"><option value=""></option>
<option value="3">#&lt;Course:0x00000105c23818&gt;</option></select>
但我希望输出为course_names中选项的course name

<select class="select optional form-control" id="student_course_id" name="student[course_id]">
<option value=""></option>
<option value="3">course-name</option>
</select>
我如何做到这一点。 第一,解决办法是

<%= f.association :course,collection:Course.all.includes(:course_name).map{|a|[a.course_name.name,a.id]}  %>

但这似乎不对?我如何告诉协会从协会获取课程名称

您是否尝试过这样使用:label_方法:

<%= f.association :course, label_method: :course_name  %>
然后使用它如下

<% f.association :course, collection: courses, label_method: lambda { |course| "#{course.course_name.name}" } %>

是的,第二个选择就是答案。但它产生了N+1查询。
<%= f.association :course, label_method: lambda { |course| "#{course.course_name.name}"}  %>
courses = Course.includes(:course_name)
<% f.association :course, collection: courses, label_method: lambda { |course| "#{course.course_name.name}" } %>