Лучший способ вывести тег, имя которого создается динамически? - PullRequest
0 голосов
/ 05 декабря 2009

В моем приложении на Rails есть партиал, который вызывается рекурсивно.

В частичном коде я хочу вывести <h1>, <h2>, <h3> ... в зависимости от уровня. (Кепка на 6 уровне, конечно)

Примерно так:

<h1>
  <p><%= ... %></p>
  <% books.each do |book| %>
      ...
  <% end %>
</h1>

------->
<% open_h(1) %>
  <p><%= ... %></p>
  <% books.each do |book| %>
      ...
  <% end %>
<% close_h(1) %>

Пока я взломал две функции как помощников, но разве это действительно самый элегантный способ сделать это?

Ответы [ 2 ]

4 голосов
/ 05 декабря 2009

Вы можете сделать что-то вроде

# _book.html.erb

<% content_tag "h#{level}" do %>
  <p><%= ... %></p>
  <% if level < 6 %>
  <%= render :collection => books, :locals => { :level => level + 1 }
  <% end %>
<% end %>

# action.html.erb

<%= render :partial => :book, :collection => @books, :locals => { :level => 0 } %>
1 голос
/ 05 декабря 2009

Я не уверен, что получил именно то, что вы хотите, но посмотрите на content_tag и tag помощников и поделитесь некоторыми вашими окончательными кодами, чтобы мы могли помочь больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...