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

时间:2012-07-02 18:07:46

标签: ruby-on-rails ruby

在我的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

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

<div id="courses">
 <% @courses.each do |course| %>
  <div class="course">
<%= simple_format course.title %>
    <%= simple_format course.description %>
  </div>
 <% end %>
</div>

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

resources :schools do
  resources :courses
end

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