从haml转换为erb

Posted

技术标签:

【中文标题】从haml转换为erb【英文标题】:Convert from haml to erb 【发布时间】:2012-11-11 02:16:23 【问题描述】:

我尝试将代码从 haml 转换为 erb,但我卡住了,不知道为什么。

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

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

我最怀疑这条线: %tr[resource]odd_or_even

我认为它可能是这样的: <tr> <% @resourceodd_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> <% @resourceodd_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】:

查看这里的文档: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 的问题。如果您仍然遇到此问题,请添加错误消息。

【讨论】:

好吧,让我们删除所有这些 cmets :p 非常感谢您的回答。我认为 如果我删除它不会有太大影响,所以我已经这样做了。它仍然显示错误“[RUBY] Expected: end”,虽然我不知道哪里有问题。这是当前代码:pastebin.com/sAuXy2F0 你没有关闭&lt;% content_for(:header) do %&gt;。在文件末尾添加&lt;% end %&gt;

以上是关于从haml转换为erb的主要内容,如果未能解决你的问题,请参考以下文章

Haml 到 Erb 手动转换

有没有好的 HAML -> ERB/H​​TML 转换器?

将 .rhtml 视图转换为 .html.erb 等

在 Rails 中使用 HAML 而不是 ERB 时 CSS 未加载 (404)

从 ruby​​ on rails 中删除 new.haml/new.erb?

Rails 3.2 - haml vs. erb。haml是否更快?(2012年2月)