Рендеринг изнутри партиалов без передачи локальной переменной - PullRequest
0 голосов
/ 24 февраля 2012

В моем вспомогательном методе я отображаю отдельный фрагмент для каждого шаблона:

structure=""
if(@page.theme_set = 1)                          #line 1
  render :partial => "first_theme.html", :locals => {:structure => structure}
else
  render :partial => "second_theme.html", :locals => {:structure => structure}
end
concat(structure)                                #line 2 

В рамках частичных я делаю это;

<% structure << header %>
<% structure << content_for_first_theme %>
<% structure << footer %> 

Все три являются методами в помощнике. Но если я переместу строку 1 и строку 2 в частичное, структура не будет отображаться. Я не хочу инициализировать и передавать локальную переменную в партиалы, но рендерить изнутри партиалов. Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Вероятно, это один из самых запутанных вопросов, которые я читал, но здесь есть несколько вещей, которые могут помочь вам двигаться:

Во-первых, ваше условие if всегда будет иметь значение true, используйте двойное равенство (==), чтобы найти равенство.

if(@page.theme_set = 1)   #this will always evaluate to true, use double equals (==) to find equality.

Далее, если вы пытаетесь визуализировать что-либо в представлении (частично), вы ничего не увидите, если не используете знак равенства в теге erb <% <strong>= %>

<%= structure << footer %> 

Наконец, кажется, что вы пытаетесь сделать все это через одну и ту же локальную переменную и передаете ссылку на партиалы. Если это так, то достаточно использовать переменную экземпляра @ structure , и она будет доступна для контроллера, представлений и помощников, поэтому передача не требуется.

0 голосов
/ 24 февраля 2012

Пожалуйста, объясните больше .. Мне не понятна эта информация.Я понял, что вы хотите, чтобы строка html в структуре отображалась в представлении.попробуйте <%= raw structure %>.Я не уверен, что я ответил на ваш вопрос или нет!

...