2012-07-02 58 views
0

在我的rails應用程序中,我有用戶,學校和課程模型。我已經建立了一個多態協會,使用戶和學校有很多課程作爲宿主,課程屬於宿主。我的路線是這樣的:在rails中配置具有多態關聯的路由

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> 

現在我只將學校視圖配置爲簡單列出課程名稱和說明。我想要做的是在學校的展示頁面上列出學校的所有課程,而不是隻顯示課程名稱的文本,我希望課程名稱成爲重新指向課程頁面的鏈接。有什麼建議麼?

謝謝。

+1

沒有直接關係,但我想知道你爲什麼在這裏使用多態關係?恕我直言,兩個單獨的關係,一個學校,一個用戶在這裏更有意義。 – zsquare

回答

0
<%= link_to course.title, school_course_path(@hostable, course) %> 
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)