我有这个部分:
<% 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;的错误谁知道为什么?
答案 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 %>