首页 > 解决方案 > Rails 5:将局部变量发送到邮件程序视图

问题描述

我正在像这样循环遍历一个集合:

<% @event_emails.each do |email| %>
  <%= render file: "event_emails_mailer/#{email.code.downcase}", locals: { @body: "body" } %>
<% end %>

渲染正在寻找正确的视图,但@body变量没有被传递。

我尝试了许多不同的语法来将@body 作为局部变量传递。我错过了一些明显的东西吗?

标签: ruby-on-rails

解决方案


事实证明,将本地参数传递给邮件程序视图并不像从常规控制器视图传递那样容易。

有效的解决方案是在循环中设置局部变量并删除 locals 参数,如下所示:

<% @event_emails.each do |email| %>
  <% @body = email.body %>
  <%= render file: "event_emails_mailer/#{email.code.downcase}" %>
<% end %>

推荐阅读