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

Ruby on rails 如何从关联中的链接访问数据?,ruby-on-rails,routes,has-many-through,Ruby On Rails,Routes,Has Many Through,我有: 我想从该Aula和Aula内某个特定学生之间的连接中显示成绩。name。这不起作用,但你会明白我想要什么: 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 - 好的,我在奥拉(i

我有:

我想从该Aula和Aula内某个特定学生之间的连接中显示
成绩。name
。这不起作用,但你会明白我想要什么:

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

-
好的,我在奥拉(id:68)里面,如果我做学生。成绩,我从所有奥拉那里得到分数

<% aula.students.each do |student| %>
  <%= link_to student.name, student %>-<%= student.grade.name %>
<% end %>


如何仅获取与此Aula(Aula_id:68)相关的年级名称

一个学生
有很多:成绩
(带“s”),所以当你有
学生
记录时,你不能在上面调用
成绩
(不带“s”),因为Rails不知道你要找的是哪个成绩

您需要做的是调用
student.grades
(带“s”),这将通知Rails您正在查看该学生的所有年级

但它还没有结束,因为使用
student.grades
您将获得该学生的所有成绩。您有两种解决方案:

要么要全部显示它们,必须循环遍历它们,如下所示:

[#<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 >]
<% student.grades.each do |grade| %>
  <%= grade.name %>
  <br />
<% end %>


如果您正在集合中查找一个特定的等级,并且只希望显示该等级(假设您正在查找id=5的等级),则可以执行以下操作:

[#<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 >]
<% student.grades.each do |grade| %>
  <%= grade.name %>
  <br />
<% end %>


此外,我建议您使用特定的词汇表,这是很好的,因此当您在谷歌搜索解决方案时,它将帮助您找到正确的信息。这里您讨论的是模型之间的连接,用Rails的话我们称之为关联:)

好的。我想,我不需要让学生知道年级的名字,我可以让学生知道年级,所以我做到了

<%= student.grades.find(5).name %>

-

现在一切都很好。

谢谢你的帮助,也许这就是我很难找到答案的原因。但这并不能解决我所有的问题。问题是,每个等级都是一个链接,如何从创建链接的特定等级获取ID?奥拉是一个三年级的学生。如果我得到所有的分数,我会有很多的分数。我只想要一个链接。这可能吗?艾伦,你完全改变了问题,我回答了你之前的问题,我想这是可行的。如果您需要其他帮助(此处为链接和ID),请创建一个新请求。谢谢你也验证了我的答案