рельсы HTML помощник - PullRequest
       29

рельсы HTML помощник

6 голосов
/ 15 ноября 2009

Я пытаюсь найти самый чистый способ генерировать немного html-контента и вкладывать в него содержимое. Используя HAML. В основном я хочу сделать что-то вроде:

= block_large
  This is some nested content

И это должно сгенерировать:

<div class="block large">
  <img src="block_large_carat.gif" class="block_large_carat">
  This is some nested content
</div>

Проблема в том, что я не знаю, как этого добиться. Partials? Helper? Я зацикливаюсь на том, как я вложил бы любой контент, который я хочу. Пытаюсь сохранить мой ХАМЛ СУХОЙ и не хочу явно объявлять тег изображения снова и снова.

1 Ответ

5 голосов
/ 15 ноября 2009

Отредактировано:
Мое предыдущее решение не сработало:)
Спасибо EmFi за указание на это.
На этот раз я (даже) проверил это, и это (даже) сработало! \ О /

Я публикую это здесь на основе этого блога .
Читайте полный пост для лучшего объяснения :)

Приложение / хелперы / application_helper.rb

  def block_to_partial(partial_name, options = {}, &block)
    options.merge!(:body => capture(&block))
    concat(render(:partial => partial_name, :locals => options), block.binding)
  end

приложение / просмотров / ххх / new.html.haml

%h2 Test!
- block_to_partial("block_large", :class_name=>"nested_content") do
  This is some nested content
OOps..

приложение / просмотров / ххх / _block_large.html.haml

#block_large
  %img(src="block_large_carat.gif" class="block_large_carat")
  %div(class=class_name)
    = body

Визуализирует:

<div id='block_large'>
  <img class='block_large_carat' src='block_large_carat.gif' />
  <div class='nested_content'>
    This is some nested content
  </div>
</div>
OOps..

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

...