如何从关联中的链接访问数据?

时间:2013-07-15 22:57:40

标签: ruby-on-rails routes has-many-through

我有:

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)?

2 个答案:

答案 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 %>

现在它运作得很好。