2017-09-01 16 views
0

我有一個有索引和顯示的學院控制器。導軌路由不同的顯示方法

索引顯示課程,並且顯示課程中的類別。我想將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 

謝謝!

回答

2

以下:

resources :academy do 
    get 'show_episodes', on: :member 
end 

會產生這樣的路線:

/academy/:academy_id/show_episodes

將調用show_episodes方法控制器上。

+0

感謝您的答覆。在我的html文件中,我可以添加一個鏈接來這樣嗎? <%=的link_to show_episodes_academy,等級: 「BTN BTN-小學」 辦%> 查看片段 <% end %> – quincosa

+0

運行'耙控制檯上routes'爲了得到正確的路線,但是,'show_episodes_academy_path(@academy)'應該這樣做 – alexunger

0

另一種方式....

Resources :academy do 
    member do 
    get :show_episodes 
    end 
end