【发布时间】:2015-05-03 20:29:35
【问题描述】:
我试图让 link_to 在控制器外部渲染视图时工作。我尝试了在互联网上找到的几种不同的解决方案。你可以看到一个尝试被注释掉了。
它不断导致: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
【问题讨论】:
-
我最终不得不将助手扩展为 ActionView::Base 的实例
-
你能详细说明一下吗?我正在尝试将部分(包含
link_to)呈现为字符串并收到错误:ActionView::Template::Error: arguments passed to url_for can't be handled. Please require routes or provide your own implementation
标签: ruby-on-rails-4