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

Ruby 1.8.7,Rails 2.3.11

我一直在尝试看起来就是我已经问过的答案了,但是对我来说都没有成功(可能是因为我对Rails相对较新并且没有正确理解它们)。

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

一个答案说render :layout => 'otherlayout' ,我在print controller方法中生成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] 

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

如果我需要发布更多信息,请告诉我。

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

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

对于您尝试过的布局:

 def print layout 'print' end 

当您渲染XML时,它不会获得布局,因为它渲染的XML不使用视图。

对于您要做的事情,您可以在布局中使用stylesheet_link_tag('print', :media => :print)创建一个打印机样式stylesheet_link_tag('print', :media => :print) 。 打印时,浏览器会自动使用此选项。