在rails中配置具有多态关联的路由

在我的rails应用程序中,我有用户,学校和课程模型。 我已经建立了一个多态关联,以便用户和学校有许多课程可以托管,并且课程属于hostable。 我的路线看起来像这样:

resources :users do resources :courses end resources :schools do resources :courses end 

我学校控制器中的节目如下所示:

 def show @school = School.find(params[:id]) @user = current_user.schools.find_by_user_id(params[:user_id]) @title = @school.school_name @hostable = @school @courses = @hostable.courses @course = Course.new end 

在学校和用户显示页面中呈现的部分课程如下所示:

 

现在我只将学校视图配置为简单列出课程标题和说明。 我想要做的是在学校的展览页面上列出所有学校的课程,而不是只显示课程标题的文本,我希望课程标题是一个重新指向课程页面的链接。 有什么建议?

谢谢。

 <%= link_to course.title, school_course_path(@hostable, course) %> 

您需要在config/routes.rb定义一个路由才能以这种方式链接到嵌套资源。 如果你还没有它,这将为你提供路线:

 resources :schools do resources :courses end 

您可以运行rake routes以获取所有路线的列表。 在我的例子中,您将获得一个school_courses列表。 然后你可以像Wawa Loo指出的那样制作一个link_to course.title, school_courses_path(@hostable, course)