Rails views helper 似乎不适用于 render_to_string
Rails views helper don't seems to work with render_to_string
我尝试使用 gem wicked_pdf 将 rails 视图转换为 pdf。
但是当我像这样render_to_string
ActionController::Base.new.render_to_string(template: "templates/pdf_meteo.html.erb", locals: {communaute_meteo_id: id}, layout: 'pdf')
像user_path
这样的方法不起作用并且return未定义的方法错误...(请注意,如果我在html中呈现它,页面会正常工作)
如果有人可以帮助我!
不幸的是,使用 render_to_string
将无法让您访问 Rails URL 助手。一种解决方法是将它们直接包含在您使用 url: Rails.application.routes.url_helpers
:
之类的内容传递到 PDF 模板的 locals
中
ActionController::Base.new.render_to_string(
template: "templates/pdf_meteo.html.erb",
locals: {url: Rails.application.routes.url_helpers, communaute_meteo_id: id}
layout: 'pdf'
)
然后在您的 PDF 模板中,您可以使用以下方式调用它们:
url.user_path
请记住,默认情况下 _path
URL 助手将是 relative,而不是绝对路径。您可以改为使用 _url
版本的助手,并以几种不同的方式为它们设置 host
。您可以为整个应用程序全局配置它们:
# config/environments/development.rb
Rails.application.routes.default_url_options[:host] = 'www.mysite.com'
或在您的 PDF 模板内的每个助手上单独设置它们:
url.user_url(host: 'www.mysite.com')
希望这能满足您的需求!
最简单的方法是使用常规 rails 渲染流程 - 使用视图文件 your_action_name.pdf.erb
,技巧是覆盖 formats
部分:
<%= render partial:"some_partial", formats:[:html] %>
您还可以 运行 render_to_string
在控制器的上下文中使用助手(因为 ActionController::Base
对您的应用一无所知)
您可以使用以下方法添加助手
ac = ActionController::Base.new
ac.view_context_class.include(ActionView::Helpers, ApplicationHelper)
ac.render_to_string(template: "templates/pdf_meteo.html.erb", locals: {communaute_meteo_id: id}, layout: 'pdf')
我尝试使用 gem wicked_pdf 将 rails 视图转换为 pdf。 但是当我像这样render_to_string
ActionController::Base.new.render_to_string(template: "templates/pdf_meteo.html.erb", locals: {communaute_meteo_id: id}, layout: 'pdf')
像user_path
这样的方法不起作用并且return未定义的方法错误...(请注意,如果我在html中呈现它,页面会正常工作)
如果有人可以帮助我!
不幸的是,使用 render_to_string
将无法让您访问 Rails URL 助手。一种解决方法是将它们直接包含在您使用 url: Rails.application.routes.url_helpers
:
locals
中
ActionController::Base.new.render_to_string(
template: "templates/pdf_meteo.html.erb",
locals: {url: Rails.application.routes.url_helpers, communaute_meteo_id: id}
layout: 'pdf'
)
然后在您的 PDF 模板中,您可以使用以下方式调用它们:
url.user_path
请记住,默认情况下 _path
URL 助手将是 relative,而不是绝对路径。您可以改为使用 _url
版本的助手,并以几种不同的方式为它们设置 host
。您可以为整个应用程序全局配置它们:
# config/environments/development.rb
Rails.application.routes.default_url_options[:host] = 'www.mysite.com'
或在您的 PDF 模板内的每个助手上单独设置它们:
url.user_url(host: 'www.mysite.com')
希望这能满足您的需求!
最简单的方法是使用常规 rails 渲染流程 - 使用视图文件 your_action_name.pdf.erb
,技巧是覆盖 formats
部分:
<%= render partial:"some_partial", formats:[:html] %>
您还可以 运行 render_to_string
在控制器的上下文中使用助手(因为 ActionController::Base
对您的应用一无所知)
您可以使用以下方法添加助手
ac = ActionController::Base.new
ac.view_context_class.include(ActionView::Helpers, ApplicationHelper)
ac.render_to_string(template: "templates/pdf_meteo.html.erb", locals: {communaute_meteo_id: id}, layout: 'pdf')