erb partials with arguments用于生成内容

时间:2016-07-04 15:22:28

标签: html css ruby-on-rails sass erb

我一直在玩sass,并且这样做我遇到.erb文件以及如何将它们与部分文件一起使用来生成完整的html文档。我想知道是否可能,如果是这样,创建一个部分.erb文件,然后我可以在主html中呈现,但使用参数作为内容传递。类似我猜想sass中的mixin / function如何生成css?

我希望能够传递一个命令来创建一个包含三列的部分,并且在其中包含指定数量的包含列表的div。

div.section
  div.column
    ul
      li
      li
  div.column
    ul
      li
      li
      li

任何你可以提供帮助的东西,即使是一个显示所需语法的简单例子,对我来说也是非常有帮助的。

1 个答案:

答案 0 :(得分:0)

您可以将content_tag帮助程序用于部分div和helper for ul list:

Erb代码:

<%= content_tag(:div, class: 'section') do %>
   <%= ul_list([1,2]) %>
   <%= ul_list([1,2,3]) %>
<% end %>

app/helpers/application_helper.rb

 def ul_list(arr)
    content_tag :div, class: 'column' do
      content_tag :ul do
        concat(raw(arr.map { |l| content_tag(:li, l) }.join))
      end
    end
  end

这些代码生成以下HTML:

   <div class="section">
        <div class="column">
            <ul>
                <li>1</li>
                <li>2</li>
            </ul>
        </div>
        <div class="column">
            <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>
        </div>
    </div>