我正在使用Letter Opener gem来预览电子邮件,但是如果我点击路由到我的应用程序中的网址的链接 - 没有任何反应。
如果我从预览中复制链接网址并将其粘贴到地址栏中,则链接可以正常运行...
有什么想法吗?
配置/ development.rb
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.default_url_options = { host: 'localhost:3000' }
视图/ app_mailer / send_mail.html.erb
<%= link_to "Home Page", root_url %>
实际的HTML
<a href="http://localhost:3000/">Home</a>
答案 0 :(得分:2)
这是因为浏览器正在尝试在与预览窗口相同的窗口中打开框架内的链接。如果您查看浏览器的开发人员工具控制台,当您点击任意localhost
链接时,您可能会看到类似的错误:
Refused to display 'http://localhost:3000/' in a frame because it set 'X-Frame-Options' to 'DENY'.
解决方案是通过添加target
属性,在新窗口或标签中打开链接,如下所示:
<%= link_to "Home Page", root_url, target: '_blank' %>
答案 1 :(得分:0)
@monfresh's answer是正确的,但这是另一种解决方案..
Rails 4 sets the default for X-Frame-Options
to SAMEORIGIN
可以解决您的问题并仍然阻止其他潜在的恶意网站在iframe中托管您的网站。
如果您对此稍微放松的设置感到满意,请删除X-Frame-Options
或/config/application.rb
个文件中添加的/config/environment/*.rb
替换
答案 2 :(得分:0)
我遇到了同样的问题,但我没有收到任何错误。
为了获得错误/异常,我使用 bang
运算符抛出错误并尝试从控制台拍摄电子邮件,如下所示,并得到了确切的问题,即为什么电子邮件没有显示在浏览器上。< /p>
##console output
2.6.6 :001 > UserMailer.test_email(User.last.id).deliver!
// removing other logs for more clarity
Rendering user_mailer/test_email.html.erb within layouts/mailer
Rendered user_mailer/test_email.html.erb within layouts/mailer (Duration: 26.7ms | Allocations: 7426)
UserMailer#test_email: processed outbound mail in 42.1ms
Traceback (most recent call last):
1: from (irb):1
Errno::EACCES (Permission denied @ dir_s_mkdir - /home/myusername/workspace/appname/tmp/letter_opener/1616711245_6137273_df0084b)
我修复了权限问题 - sudo chmod -R 0777 tmp/
问题已解决并开始在浏览器中打开电子邮件,而不是在没有任何错误的情况下静默失败。