Я пытался очистить application.html.erb
, перемещая части макета в партиалы. У меня был следующий код для обработки ошибок/уведомлений флэш-памяти:
<div id="flash">
<% if flash[:notice] %>
<h3 class="info_box"><%= flash[:notice] %></h3>
<% end %>
<% if flash[:error] %>
<h3 class="error_box"><%= flash[:error] %></h3>
<% end %>
</div>
Этот код отлично работал в application.html.erb
, пока я не переместил его в файл с именем "_flash.html.erb
" и не заменил его следующим:
<%= render 'layouts/flash' %>
В частичном хэше флэш-памяти не было распознанного объекта, и это вызывает "У вас есть нулевой объект, когда вы этого не ожидали!" ошибка.
Я переместил код обратно в application.html.erb, и все хорошо. Но я не смог найти ответ на доступ к флэш-хэшу в партиале. Глядя на Rails Guide для «Rendering and Layouts», я вижу, что существуют различные способы для render()
передавать переменные в партиал, но мне не удалось понять это. Любые идеи?
<%= render :partial => 'layouts/flash' %>
? Кроме того, откуда вы звоните этомуrender
? И, я бы сказал, держите этот фрагмент вне макетов. - person Zabba   schedule 06.11.2011render 'layouts/flash, :locals => {:flash => flash}
. Но я не знаю, действительно ли это лучший вариант. - person topek   schedule 06.11.2011