0

比方说,我将为show.html.erb同一型号提供两个版本。

第一个,这是默认的,我将调用 as show.html.erb

例如第二个 - show1.html.erb

所以,我想用第一个在浏览器上显示,第二个用于打印。

我必须在控制器中为此创建一个方法吗?

一般来说,除了脚手架创建的视图之外,是否可以创建其他视图?

4

2 回答 2

2

您可以使用 respond_to 方法使用不同格式的输出

假设您将需要 html 和文本版本

def action
  # do some logic
  respond_to do |format|
    format.html
    format.text
  end
end

在这种情况下,路由 ".../action" show.html.erb 将被渲染。对于“.../action.txt”,将呈现 show.text.erb。您可以通过在块中传递模板名称来自定义模板名称,例如format.text { render 'show1' }

查看更多:http ://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

于 2013-07-24T04:42:27.323 回答
1

为什么不使用这个wicked_pdfgem:https ://github.com/mileszs/wicked_pdf生成 pdf 用于打印:

添加Mime::Type.register "application/pdf", :pdf

config/initializers/mime_types.rb

在显示方法中:

  def show
    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "file_name"
      end
    end
  end

现在您只需要创建一个show.pdf.erb文件并将其用于打印。

于 2013-07-24T04:46:54.467 回答