2017-09-01 9 views
0

私は、インデックスとショーを持つアカデミーコントローラを持っています。Railsルーティング別の表示方法

インデックスにはコースが表示され、ショーにはコースのカテゴリが表示されます。 show_episodesメソッドをコントローラに追加して、show_episodes.html.erbで呼び出すと、そのコースとそのカテゴリに関連するエピソードが表示されます。

URLのパスがアカデミー(インデックス)/ course_id(コースのセクションを表示)/ category_id(URLのパスを示す各セクションのエピソード) これは私のルートは

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

次:あなたのコントローラ上show_episodesメソッドを呼び出します

/academy/:academy_id/show_episodes

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

のようなルートを生成します。

+0

感謝。私のHTMLファイルで、私はこのようなリンクを追加できますか? :正しいを得るためにあなたのコンソール上ビューエピソード <% end %> – quincosa

+0

実行 'すくいroutes' <%=のlink_to show_episodes_academy、クラス%やる "BTN-主要BTN">をルートですが、 'show_episodes_academy_path(@academy)'はそれを行うべきです – alexunger

0

別の方法....返信用

Resources :academy do 
    member do 
    get :show_episodes 
    end 
end 
関連する問題