местните в релси частично

Имам това частично:

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

При стартиране получавам:

недефинирана локална променлива или метод „тип“ за

<#:0x007fe510aa3c80>

Сочи към грешка, когато извеждам ‹%= type %> Някой знае ли защо?


person rctneil    schedule 20.04.2014    source източник
comment
Имам нужда типът да бъде част от името на класа. За да не се задоволявате вътре в div. Въпреки това преместването на изхода на type вътре в div само за да се види дали работи там също се проваля.   -  person rctneil    schedule 20.04.2014


Отговори (3)


Трябва да посочите, че изобразявате частично, за да преминете в локалните променливи.

Така че промените

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

to

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

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

person Sterling Graham    schedule 20.04.2014

Опитайте тази:

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

Всъщност можете да изобразите частично, без да използвате :partial, ако не подавате други опции. т.е. Важното, което трябва да се отбележи, е, че изричното указване на :partial се изисква при предаване на допълнителни опции като :layout, :locals и т.н. Така че трябва да бъде,

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

Справка: Използване на части

person Rajesh Omanakuttan    schedule 20.04.2014