2013-04-15 23 views
0
class ProductsController < ApplicationController 
    layout :products_layout 

    def show 
    @product = Product.find(params[:id]) 
    end 

    private 
    def products_layout 
     @current_user.special? ? "special" : "products" 
    end 

end 

這裏是什麼時候方法products_layout得到執行?我看不到那個叫做products_layout的方法,那麼如何定義符號:products_layout如何理解Rails中的運行時佈局?

回答

0

Rails具有隱式渲染,所以在「show」方法的最後,由於您沒有告訴Rails做任何不同的事情,它會渲染app/views/products/show.html.erb模板。

此外,它會查看您指定的佈局。在這裏,你已經給出了一個佈局符號,Rails認爲「執行這個方法名稱來找出我應該使用的佈局」

+0

如何將@ current_user傳回控制器?看起來它也沒有定義。 – ZeroNegOne

+0

你使用什麼進行身份驗證?通常,這將在application_controller中,然後可以訪問。 –