我有:
Aulas
has_many :grades
has_many :students, :through => :grades
Students
has_many :grades
has_many :aulas, :through => :grades
Grades
belongs_to :aula
belongs_to :student
我想从Aula和Aula中的特定学生之间的连接中显示grades.name
。这不起作用,但你会明白我想要的东西:
<% aula.students.each do |student| %>
<%= link_to student.name, student %>-<%= student.grade.name %>
<% end %>
好的,我在Aula(id:68)里面,如果我做学生。升级,我从所有Aulas得到成绩
[#<Grade id: 51, name: AA1, student_id: 22, aula_id: 68 >,#<Grade id: 52, name: AA2, student_id: 22, aula_id: 69 >,#<Grade id: 53, name: AA3, student_id: 22, aula_id: 70 >]
我如何才能获得与此Aula相关的成绩名称(aula_id:68)?
答案 0 :(得分:1)
学生has_many :grades
(带有's'),所以当你有student
条记录时,你就不能拨打grade
(没有's'),因为Rails不会不知道你在找什么等级。
您需要做的是致电student.grades
(带有's'),这将告诉Rails您正在查看该学生的所有年级。
但它还没有完成,因为student.grades
你得到了这个学生的所有成绩。你有两个解决方案:
你想要全部展示它们,你必须循环遍历它们,如下所示:
<% student.grades.each do |grade| %>
<%= grade.name %>
<br />
<% end %>
要么你正在寻找你的收藏中的一个特定成绩而你只想展示这一个(让我们想象你正在寻找id = 5的等级),你会这样做:
<%= student.grades.find(5).name %>
此外,我建议您使用特定的词汇表,它很好,所以当您在谷歌搜索解决方案时,它将帮助您找到正确的信息。这里你谈的是模型之间的联系,在Rails中我们称之为关联:)
答案 1 :(得分:0)
确定。我认为不是通过学生获得成绩的名称,我可以让学生通过成绩,所以我做了
<% aula.grades.each do |grade| %>
<%= link_to grade.student.name, student %>-<%= grade.name %>
<% end %>
现在它运作得很好。