2013-03-31 37 views
0

我有一個包含小說和插圖的網站。在插圖的展示頁面上,我希望顯示屬於同一部小說的所有插圖的縮略圖網格。我如何在視圖的illustrations_controller中調用一個方法(帶參數)以返回我使用find方法獲得的小說列表?我試過以下,但錯誤信息的權利要求我沒有在控制器此消息:rails - 在不屬於該類的視圖中顯示類的所有元素'索引視圖

<% @illustrations = IllustrationsController.get_related_by_novel %>

這裏是在控制器中的方法:

class IllustrationsController < ApplicationController 
. 
.#some code here 
. 
    def get_related_by_novel 
    @illustrations = Illustration.find(params[:id][:novel]) 
    end 
end 

即使我得到這個打電話工作,我不知道如何將params從當前查看的插圖傳遞給控制器​​,以便它可以運行查詢。

謝謝。 「

回答

1

」即使我接到這個電話工作,我也不知道如何將參數從當前查看的插圖傳遞給控制器​​,以便它可以運行查詢。「 您可能需要閱讀有關associationsRoutes的Rails指南。顯示插圖的標準REST風格的路線也只是:

get /illustrations/:id => illustrations#show

這將請求發送到IllustrationsController與params[:id]集的插圖ID。理想情況下,您的控制器應委派給模型以查找相關插圖。假設你有一個標準有很多,屬於新型和插圖之間的關係,那麼你的控制器代碼可能看起來像這樣:

class IllustrationsController 
    def show 
    @illustration = Illustration.find(params[:id]) 
    @related_illustrations = @illustration.find_related 
    end 
end 

和你的模型代碼看起來是這樣的:

class Illustration 
    def find_related 
    self.novel.illustrations - [self] 
    end 
end 

有總是有更多的方法來做到這一點,但在我看來,這保持了與模型的關聯邏輯並保持了控制器的輕量性。

+0

這是一個非常優雅的解決方案。感謝您的描述。這真的可以幫助我理解如何在模型中放置一些實用程序,而不僅僅是控制器。這是我一直在努力的事情。謝謝! –

相關問題