我是 Rails 新手,所以我對如何解決這個問題沒有明確的想法。
我有一個ActiveRecord::Associations::CollectionProxy物件存盤在@electives. 具體來說,我有
@electives = @degree.electives
Degree并且Elective是帶有表格degrees和的模型electives。我已經定義了和模型has_and_belongs_to_many之間的關聯。DegreeElective
此外,我還有一個Course帶有相應courses表格的模型。我還定義了和模型has_and_belongs_to_many之間的另一種關聯。CourseElective
除了上面列出的表,我還有degrees_electives和courses_electives連接表。
現在,我想在一個頁面上顯示一個學位的選修課串列,以及與選修課相關的所有課程。所以,我想要類似的東西:
- Software Engineering Elective A
- COMP SCI 3008 Computer Networks & Applications
- COMP SCI 1234 Object Oriented Programming
- COMP SCI 4567 Algorithm Design & Data Structure Analysis
- Software Engineering Elective B
- MATHS 1012 Mathematics IA
- CIVIL 2000 Civil Engineering Introduction
- Software Engineering Elective C
- COMP SCI 1012 Introduction to Programming
我能夠顯示串列:
- Software Engineering Elective A
- Software Engineering Elective B
- Software Engineering Elective C
但我不知道如何顯示子串列。
目前,我的控制器中有:
@degree = @student.degrees.first
@electives = @degree.electives
@degree包含一個Degree物件。
而且,我的觀點包括:
<ul>
<% @electives.each do |elective| %>
<li>
<%= elective.name %>
</li>
<% end %>
</ul>
網頁如下所示:

我需要有關顯示子串列的幫助。
我堅持的是,當我.courses呼叫@electives. 例如,我可以這樣做:
@electives.each do |elective|
@courses = elective.courses
end
但隨后,將包含與我在視圖中使用@courses的最后一個元素相對應的課程。@electives@courses
Ruby 中是否有可以將值推送到的矢量資料結構?我不知道該怎么做。任何幫助將不勝感激。謝謝你。
uj5u.com熱心網友回復:
您可以迭代與選修課關聯的課程,就像您已經迭代課程一樣,唯一的區別是嵌套在另一個迭代中:
<ul>
<% @electives.each do |elective| %>
<li><%= elective.name %>
<ul>
<% elective.courses.each do |course| %>
<li><%= course.name %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
為了避免N 1 查詢問題,我建議通過將控制器更改為:在一個查詢中預先加載與選修課相關的所有課程:
@degree = @student.degrees.first
@electives = @degree.electives.includes(:courses)
uj5u.com熱心網友回復:
你甚至不需要變數
<ul>
<% @electives.each do |elective| %>
<li>
<%= elective.name %>
<ul>
<% @elective.courses.each do |course|%>
<li>
<%= course.name %>
</li>
<% end %>
</li>
<% end %>
</ul>
在控制器中,您最好在課程中包含選修課以對其進行初始化,以免對資料庫進行 n*m 呼叫
@electives = Elective.includes(:courses)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503813.html
上一篇:Rspec期望()與期望{}
