如何为特定的:动作使用不同的布局?

时间:2011-06-20 02:53:50

标签: ruby-on-rails

Ruby 1.8.7,Rails 2.3.11

我一直在尝试answers,这似乎是我已经问过的问题,但是对我来说都没有成功(可能是因为我对Rails相对较新并且没有正确理解它们)

我正在尝试为模型(海报)创建一个适合打印的视图,可以在/ posters / print / 1访问。如何让打印操作使用与索引,新建,编辑和显示不同的布局文件?

一个答案说render :layout => 'otherlayout',我把它放在打印控制器方法中以制作format.xml { render :layout => 'print', :xml => @poster }。当我刷新(清除缓存后)页面时,这并没有改变任何内容。

另一个答案说

layout 'layout', :only => [:first_action, :second_action]
layout 'second_layout', :only => [:third_action, :fourth_action]

我把它放在海报控制器文件的顶部,如下所示:

layout 'posters', :only => [:show, :edit, :index]
layout 'print', :only => [:print]

但似乎只使用后一行(show,edit和index直接从他们自己的.html.erb文件呈现,而不是包含在海报布局中)。

如果我需要发布更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

当你渲染XML时,它没有得到布局,因为它渲染了XML,它不使用视图。

对于您要执行的操作,您只需在布局中使用stylesheet_link_tag('print', :media => :print)创建打印机样式表即可。打印时,浏览器会自动使用它。

答案 1 :(得分:1)

您可以使用几种方法。一个是布局,另一个是通过CSS。我不会选择另一个页面加载和数据库调用,而是选择不难的CSS方法,只需更改要打印的媒体类型,如下所示:

stylesheet_link_tag 'print', :media => 'print'

对于您尝试过的布局:

def print
  layout 'print'
end