当地人在铁路部分

时间:2014-04-20 10:14:12

标签: ruby-on-rails partial locals

我有这个部分:

<% 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'for

     

&LT;#:0x007fe510aa3c80&GT;

我指的是输出&lt;%= type%&gt;的错误谁知道为什么?

3 个答案:

答案 0 :(得分:2)

您必须指定渲染部分以传入局部变量。

所以改变

<%= render 'shared/flash_message', locals: { type: type, message: message } %>

<%= render partial: 'shared/flash_message', locals: { type: type, message: message } %>.

http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分: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 %>

参考:Using Partials