【发布时间】:2013-07-24 03:47:48
【问题描述】:
假设,我将有两个版本的show.html.erb 用于同一型号。
第一个,默认的,我叫show.html.erb。
第二个,例如 - show1.html.erb。
所以,我想使用第一个在浏览器上显示,第二个用于打印。
我必须在控制器中为此创建一个方法吗?
一般来说,除了脚手架创建的视图之外,是否可以创建其他视图?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4
假设,我将有两个版本的show.html.erb 用于同一型号。
第一个,默认的,我叫show.html.erb。
第二个,例如 - show1.html.erb。
所以,我想使用第一个在浏览器上显示,第二个用于打印。
我必须在控制器中为此创建一个方法吗?
一般来说,除了脚手架创建的视图之外,是否可以创建其他视图?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4
您可以使用 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
【讨论】:
为什么不使用这个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 文件并将其用于打印。
【讨论】: