如果我有两个版本的show.html.erb

时间:2013-07-24 03:47:48

标签: ruby-on-rails ruby-on-rails-4

让我们说,对于同一型号,我将有show.html.erb的两个版本。

第一个是默认值,我将调用show.html.erb

第二个,例如 - show1.html.erb

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

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

一般情况下,除了脚手架创建的视图外,还可以创建其他视图吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

config/initializers/mime_types.rb

show方法中的

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

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