从haml转换为erb

时间:2012-11-11 02:16:24

标签: ruby-on-rails-3 haml erb

我尝试将代码从haml转换为erb,但我遇到了困难而且不知道原因。

以下是我要转换的原始代码:https://github.com/gmarik/simple-backend-example/blob/master/app/views/backend/resource/_index.html.haml

这就是我现在所拥有的。有人可以看看它并给我一些提示。谢谢。

我最怀疑这句话: %tr[resource]{odd_or_even}

我认为它可能是这样的: <tr> <% @resource{odd_or_even} %>

RubyMine在这一行给了我一个错误: <%= paginate collection %>

    <% content_for(:header) do %>
      <h1><%= resource_class.model_name.human(count: 2) %></h1>

    <ul class="tabs">
       <li class="active"><%= link_to "Index", "#" %></li>
       <li><%= link_to "New", new_resource_path %> </li>
    </ul>
    <table class='zebra-striped'>
      <thead>
        <tr>
          <% attributes.each do |attr| %>
            <th> <%= resource_class.human_attribute_name(attr) %></th>
          <th> &nbsp;</th>
        </tr>
      </thead>
      <tbody>
        <% collection.each do |resource| %>
          <tr> <% @resource{odd_or_even} %>
            <% attributes.each do |attr| %>

            <td> <%= resource.public_send(attr).to_s.truncate(20) %> </td>        
            <td class='row-actions'>
              <%= link_to 'show', resource_path(resource) %>
              |
              <%= link_to 'edit', edit_resource_path(resource) %>
              |
              <%= link_to 'destroy', resource_path(resource), method: :delete, confirm: "Are you sure?" %>
            </td>
        <% end %> 
      </tbody> 
    </table>  
    <%= paginate collection %>

1 个答案:

答案 0 :(得分:1)

查看此处的文档:http://haml.info/docs/yardoc/file.REFERENCE.html#object_reference_

我会说:

<tr id="<%= "#{resource.class.name.underscore}_#{resource.to_key}" %>" class="<%= resource.class.name.underscore %>">

这是翻译%tr[resource]

现在,{odd_or_even}只会将助手odd_or_even的结果哈希转换为tr上的属性。

如果我们在这里查看方法的定义:https://github.com/gmarik/simple-backend-example/blob/master/app/helpers/backend/application_helper.rb

我们看到只是调用cycle才能设置额外的课程。因此我们最终得到:

<tr id="<%= "#{resource.class.name.underscore}_#{resource.to_key}" %>" class="<%= "#{resource.class.name.underscore} #{cycle("odd", "even", name: "rows")}" %>">

现在,所有这些都无法解决paginate的问题。如果您仍然坚持这一点,请添加错误消息。