比方说,我将为show.html.erb
同一型号提供两个版本。
第一个,这是默认的,我将调用 as show.html.erb
。
例如第二个 - show1.html.erb
。
所以,我想用第一个在浏览器上显示,第二个用于打印。
我必须在控制器中为此创建一个方法吗?
一般来说,除了脚手架创建的视图之外,是否可以创建其他视图?
比方说,我将为show.html.erb
同一型号提供两个版本。
第一个,这是默认的,我将调用 as show.html.erb
。
例如第二个 - show1.html.erb
。
所以,我想用第一个在浏览器上显示,第二个用于打印。
我必须在控制器中为此创建一个方法吗?
一般来说,除了脚手架创建的视图之外,是否可以创建其他视图?
您可以使用 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
文件并将其用于打印。