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">#<Course:0x00000105c23818>
<select class="select optional form-control" id="student_course_id" name="student[course_id]"><option value=""></option>
<option value="3">#<Course:0x00000105c23818></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">#<Course:0x00000105c23818></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}" } %>