我想在rake任务上获取渲染字符串。但是类似new_book_url
的网址没有主机。
# on rake
controller = ApplicationController.new.tap do |controller|
controller.request = ActionDispatch::Request.new({})
end
p controller.render_to_string('books/index', layout: nil) #=> "<a href=\"http://:/books/new\">New Book URL</a>\n"
p Rails.application.config.action_mailer[:default_url_options] #=> {:host=>"localhost", :port=>3000}
p Rails.application.routes.default_url_options #=> {}
# books/index
<%= link_to 'New Book URL', new_book_url %>
当我设置
Rails.application.routes.default_url_options = Rails.application.config.action_mailer[:default_url_options]
时,它不起作用... 最佳答案
您需要添加default_url_options
作为控制器的实例方法:
controller = ApplicationController.new.tap do |controller|
controller.request = ActionDispatch::Request.new({})
def controller.default_url_options
host = {'production' => 'production.example.org', 'development' => 'development.example.org'}[Rails.env]
{host: host}
end
end
p controller.render_to_string('books/index', layout: nil)
关于ruby-on-rails - 如何在rake上设置默认主机?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31853498/