使用布局进行特定操作

pro*_*nce 36 ruby-on-rails

如果我想使用某个动作的布局(比如show动作),这个动作与在controller.rb文件顶部声明的布局不同,我怎么能这样做?这在轨道中必须是可能的,但我似乎无法找到任何关于它的东西.

Don*_*oby 43

  render :layout => 'otherlayout'
Run Code Online (Sandbox Code Playgroud)

  • +1:正如我所说,唐也是对的.并且+1就像这样,是我曾经参与过的最不起眼的社区.每个人都更关心生产力而不是正确.当Internet 2.0问世时,这应该是主要概念. (4认同)

Kyl*_*cey 37

layout 'layout', :only => [:first_action, :second_action]
layout 'second_layout', :only => [:third_action, :fourth_action]
Run Code Online (Sandbox Code Playgroud)

唐也是对的,只是取决于你的申请更干(或干?)


编辑 我以前的代码是错误的.您不能layout多次指定该功能.我在网上找到了这个动态布局渲染的解决方案

class OrdersController < BaseController
  layout :determine_layout

private
  def determine_layout
    %w(new).include?(action_name) ? "some_layout" : "public"
  end
end
Run Code Online (Sandbox Code Playgroud)

资料来源:apidock.com/rails/Actio ...

  • +1:如果要将布局应用于多个操作,则效果会更好. (4认同)
  • Rails 似乎不接受每个文件的多个布局规范。您可以指定 :only a, b, c 但您不能指定另一个具有不同目标的集合。 (2认同)