【发布时间】:2015-06-21 21:19:50
【问题描述】:
在 Rails 3.2 应用程序中,我尝试在 Mailer 中使用浏览器 URL 和它的视图。
这是来自views/comment_mailer/comment_email.html.erb的代码:
<% fromurl = request_url %>
也试过了:
<% fromurl = request.url %>
但是,我得到了这个错误:
undefined local variable or method `request_url' for ...
在调试器(更好的错误 gem)中,如果我输入 request,我会得到 nil。
感谢您的帮助!
更新1:
我的问题似乎只存在于邮件和它的视图中。如果我将相同的代码放在普通视图中,它可以正常工作。我什至尝试在获取 URL 的helper/application_helper.rb 中添加帮助代码。它在其他视图中有效,但在邮件视图中我得到undefined local variable or method。
【问题讨论】:
-
当您说“在调试器中”时,您指的是 IRB 控制台吗?或者也许是
binding.pry?因为在由 HTTP 请求执行的视图中,变量request永远不会是nil。奇怪的是,在您的情况下,request是nil。 -
我正在使用 gem 更好的错误。它在错误时给了我一个 Rails 控制台。
-
你能不能在你的视野里打电话给
<%= request.inspect %>,看看是nil还是别的什么? (不要让错误发生,因为您最终会得到更好的错误控制台,我怀疑它会更改request变量的上下文,这就是我试图通过要求您输出来证明的原因request.inspect) -
我猜在EMAIL模板中你不应该使用
request,因为当你收到电子邮件时没有http请求 -
我认为
request变量只能在控制器中访问。您可以通过在控制器方法@fromurl = request_url中编写它并在视图<% @fromurl %>中访问它来尝试它
标签: ruby-on-rails