【问题标题】:in case I have two versions of show.html.erb如果我有两个版本的 show.html.erb
【发布时间】:2013-07-24 03:47:48
【问题描述】:

假设,我将有两个版本的show.html.erb 用于同一型号。

第一个,默认的,我叫show.html.erb

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 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

    【讨论】:

      【解决方案2】:

      为什么不使用这个wicked_pdf gem: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 文件并将其用于打印。

      【讨论】:

      • 谢谢,我还发现了一些关于 PDF 的 railscasts。
      • 我知道有一个,一年前我用过,只是找不到将它放在这里的链接。
      • 这里是链接railscasts.com/episodes?utf8=%E2%9C%93&search=pdf。你指的是哪一个?
      • 是的,我看过这个,看起来我使用了一个不是 railscasts 的教程,无论如何,这很容易根据他们拥有的文档添加到您的应用程序中。
      • 谢谢!如果发生这种情况你记得,请告诉我。 :)
      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多