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定义符号?

4

1 回答 1

0

Rails 有隐式渲染,所以在方法“show”的最后,因为你没有告诉 Rails 做任何不同的事情,它会渲染 app/views/products/show.html.erb 模板。

此外,它会查看您指定的布局。在这里,您为布局指定了一个符号,Rails 将其理解为“执行此方法名称以找出我应该使用的布局”

于 2013-04-15T02:27:51.577 回答