Rails局部视图中的局部变量

3

我有这个部分:

<% if flash.any? %>
  <% flash.each do |type, message| %>
    <%= render 'shared/flash_message', locals: { type: type, message: message } %>
  <% end %>
<% end %>

包括这部分内容:
<div class="message-box message-box--<%= type %>">
  <a class="close" data-dismiss="alert">×</a>
  <%= message %>
</div>

当我运行代码时出现以下错误:

未定义本地变量或方法 `type',错误出现在

<#:0x007fe510aa3c80>

这个错误指向输出 <%= type %> 的位置。有人知道是为什么吗?


我需要类型成为类名的一部分,而不是内容在div内部。即使将类型的输出移动到div内部以查看它是否有效,也会失败。 - rctneil
3个回答

3

0

试试这个:

<% if flash.any? %>
 <% flash.each do |type, message| %>
 <%= render :partial=>'shared/flash_message', locals: { type: type, message: message } %>
 <% end %>
<% end %>

0
其实,如果您没有传递任何其他选项,可以在不使用:partial的情况下呈现部分内容。也就是说,需要明确指定:partial,当传递其他选项时,例如:layout:locals等。 因此,应该是这样的,

<% if flash.any? %>
  <% flash.each do |type, message| %>
    <%= render partial: "shared/flash_message", locals: { type: type, message: message } %>
  <% end %>
<% end %>

参考:使用部分


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接