2010-09-22 3 views
-1

В Rails, вы можете создать якорь тег, который охватывает несколько строк делают что-то вроде следующего:Установить значение Rails на несколько строк?

<% link_to target_url_path do %> 
    <span class="title">Example</span> 
    <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span> 
    <%= image_tag 'example.png', :class => 'thumbnail' %> 
<% end > 

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

<% my_variable = do %> 
    <span class="title">Example</span> 
    <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span> 
    <%= image_tag 'example.png', :class => 'thumbnail' %> 
<% end > 

Edit: в случае, если кому-то интересно, почему я спрашиваю, это потому, что facebox_link_to не появляется, чтобы позволить вам использовать синтаксис do как link_to делает.

ответ

5

Я действительно не знаю, что вы хотите сделать, однако вы можете использовать шаблон #tap.

<% my_variable.tap do |variable| %> 
    <span class="title">Example</span> 
    <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span> 
    <%= image_tag 'example.png', :class => 'thumbnail' %> 
<% end %> 

Если вместо этого вы хотите назначить фрагмент кода переменной, то вы делаете это неправильно, потому что мнения не следует устанавливать переменные таким образом.

Вместо этого используйте вспомогательный.

+0

Можете ли вы предоставить ссылку на шаблон 'tap'? Мне интересно узнать больше об этом. Благодаря! –

+0

Я пробовал это, и он не сработал: 'синтаксическая ошибка, неожиданный KENSURE, ожидающий kEND' –

+1

http://ruby-doc.org/core-1.9/classes/Object.html#M000191 Также читайте http: // бит .ly/aYgkKe for Rails 3.0 –

0

Это эффективно рендеринг встроенного шаблона. Вы можете использовать render :inline для этого:

<% my_variable = render :inline => <<-EOS 
<span class="title">Example</span> 
<span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span> 
#{image_tag 'example.png', :class => 'thumbnail'} 
EOS 
%> 

Надеюсь, это поможет!

+2

Пожалуйста, не делайте этого. Вы убиваете шаблон MVC! –

+0

Помощник, как вы предполагали, - это путь вперед. Это мой литеральный ответ на вопрос. –