ruby-on-rails – 在Rails 3中:如何使用自定义格式在respond_with中使用布局进行渲染?

我的问题类似于这个问题中的问题,但恰恰相反.

How do I specify “:layout => false” in Rails’ respond_with?

控制器是一种文件转换器.它响应多种格式.一种格式应该呈现显示元数据的html布局.与大多数其他格式不同,此格式需要渲染布局.问题是我不能说服Rails渲染它.

class CustomFilesController < ApplicationController
  respond_to :all, :only => :show
  def show
    @custom_file = CustomFile.find(params[:id])
    respond_with(@custom_file) do |format|
      format.html {}
      format.xml {}
      format.json {}
      format.fil {
        puts '>>>>> IN FIL <<<<<'
        render :layout => true
      }
      format.any {
        file = @custom_file.as(:type => params[:format], :size => params[:size]) ## the REAL path to the file
        (file.nil? || @custom_file.nil?) ? head(:not_found) : send_file(file, :disposition => 'inline', :url_based_filename => true)
      }
    end
  end
end

我认为“:layout => true”会起作用,但显然不行.

正如你所看到的那样,在把它粘贴到这里之前我已经剥离了控制器中的所有其他东西.格式“fil”作为text / html格式添加到mime类型的config / initializers / mime_types.rb中.我有我的视图文件,它呈现,但没有任何布局.

我很感激任何建议.我现在已经无处可去了,我在网上找到的任何内容都表明我的代码应该可行.

提前致谢.

最佳答案 如果我指定布局文件的确切路径和文件名,则发现布局呈现.就我而言:

render :layout => '/layouts/application.html.haml'
点赞