Ruby on rails 4 链接到url帮助程序在Rails 4的呈现到字符串中不起作用

Ruby on rails 4 链接到url帮助程序在Rails 4的呈现到字符串中不起作用,ruby-on-rails-4,Ruby On Rails 4,在渲染控制器外部的视图时,我试图使link_正常工作。我在网上找到了几种不同的解决方案。您可以看到一次尝试被注释掉 它不断为nil:NilClass生成:未定义的方法“host” ac = ApplicationController.new ac.class.include Rails.application.routes.url_helpers #context = Rails.configuration.paths['app/views'] #view =

在渲染控制器外部的视图时,我试图使link_正常工作。我在网上找到了几种不同的解决方案。您可以看到一次尝试被注释掉

它不断为nil:NilClass生成:未定义的方法“host”

    ac = ApplicationController.new
    ac.class.include Rails.application.routes.url_helpers

    #context = Rails.configuration.paths['app/views']
    #view = ActionView::Base.new(context)
    #view.class.include Rails.application.routes.url_helpers
    #view.render :layout => 'layouts/pdf.html.haml', :template => 'reports/show.pdf.haml', locals: {alerts:@alerts}

    ac.render_to_string(:layout => 'layouts/pdf.html.haml', :template => 'reports/show.pdf.haml', locals: {alerts:@alerts})
我还试着在班上骑马。ActionView::Base的东西似乎都不起作用

class ViewRenderer < ActionView::Base
  include Rails.application.routes.url_helpers
  include ApplicationHelper

  def default_url_options
     {host: Rails.application.routes.default_url_options[:host]}
  end
end
class ViewRenderer
虽然这个问题已经问了4年了,但我的回答是我认为在这里可以有所帮助

一个选项是直接在传递给模板的
locals
中包含URL帮助程序:

ac.render\u到\u字符串(
布局:“layouts/pdf.html.haml”,
模板:“reports/show.pdf.haml”,
本地人:{url:Rails.application.routes.url_helpers,警报:@alerts}
)
然后在模板内部,您可以使用显式设置的主机调用它们:

url.user\uURL(主机:“www.mysite.com”)
或者,您可以为整个应用程序全局配置主机:

#config/environments/development.rb
Rails.application.routes.default\u url\u options[:host]=“www.mysite.com”

我最后不得不将助手扩展到ActionView::Base的一个实例中。您能详细说明一下吗?我试图将一个部分(包含链接到)呈现为字符串,并得到错误:
ActionView::Template::error:无法处理传递到url的参数。请要求路由或提供您自己的实现
请用实现此功能的代码写出您的答案:我现在面临着同样的问题:)