我有一個有索引和顯示的學院控制器。導軌路由不同的顯示方法
索引顯示課程,並且顯示課程中的類別。我想將show_episodes方法添加到將在show_episodes.html.erb中調用的控制器中,該控制器將顯示與該課程和該類別相關的劇集。
我有查詢編寫和一切,但是當涉及到路由什麼將是最好的路由方式,所以URL中的路徑是學院(索引)/ course_id(顯示課程中的部分)/ category_id(顯示在每個部分情節) 這是我的路線看起來像
resources :academy, :only => %w(index show)
我控制器
class AcademyController < ApplicationController
before_action :authenticate_users_user!
def index
@courses = Course.active
.select("sum(progress)/count(1) AS progress, courses.name, courses.id, courses.course_episodes_count")
.joins("left outer join course_categories on course_categories.course_id = courses.id")
.joins("left outer join course_episodes on course_episodes.course_category_id = course_categories.id")
.joins("left outer join user_course_progresses on course_episodes.id = user_course_progresses.course_episode_id")
.group("courses.name, courses.id, courses.course_episodes_count")
end
def show
@course_categories = CourseCategory.active
.select("sum(progress)/count(1) AS progress, course_categories.order, course_categories.name, course_categories.id, course_episodes_count, img_url")
.joins("left outer join course_episodes on course_categories.id = course_episodes.course_category_id")
.joins("left outer join user_course_progresses on course_episodes.id = user_course_progresses.course_episode_id")
.group("course_categories.order, course_categories.name, course_categories.id, course_episodes_count, img_url")
.order(order: :asc)
end
def show_episodes
course_category_id = params[:id]
@course_episodes = CourseEpisode.active
.select("p.progress, course_episodes.*")
.joins("LEFT OUTER JOIN user_course_progresses p on p.course_episode_id = course_episodes.id")
.where("course_categories_id = ? and p.user_id = ? and p.course_episode_id = course_episodes.id", course_category_id, current_users_user.id)
.order(order: :asc)
@course_categories = CourseCategory.active
.select("name, courses_id")
.where("id = ? ", course_category_id)
.first
end
end
謝謝!
感謝您的答覆。在我的html文件中,我可以添加一個鏈接來這樣嗎? <%=的link_to show_episodes_academy,等級: 「BTN BTN-小學」 辦%> 查看片段 <% end %> – quincosa
運行'耙控制檯上routes'爲了得到正確的路線,但是,'show_episodes_academy_path(@academy)'應該這樣做 – alexunger