Rails HAML div作为链接 - >没有成功

时间:2013-05-17 21:45:40

标签: ruby-on-rails hyperlink haml

我尝试将完整的DIV作为链接,但它只是起作用。这就是我所拥有的:

= link_to (user_orders_path(current_user)) do
  .current_orders.box.tile.one_third.lightblue
    .count
      %i.icon-shopping-cart
      =@current_orders
    .link
      - if @current_orders > 0
        = link_to t('.current_orders'), user_orders_path(current_user)
      - else
        = t('.no_current_orders')

但不知何故Rails将其作为:

<a href="/users/1/orders"></a>
<div id="current_orders" class="box tile one_third lightblue">
  <a href="/users/1/orders">
    <div class="count">
      <i class="icon-shopping-cart"></i>
      3
    </div>
  </a>
  <div class="link">
     <a href="/users/1/orders"> </a>
     <a href="/users/1/orders">Open bestellingen</a>
  </div>
</div>

我做错了什么?它应该生成为:

<a href="/users/1/orders">

  <div id="current_orders" class="box tile one_third lightblue">

    <div class="count">
      <i class="icon-shopping-cart"></i>
       3
    </div>

    <div class="link">
       <a href="/users/1/orders">Open bestellingen</a>
    </div>
  </div>
</a>

1 个答案:

答案 0 :(得分:1)

我看到的第一件事是你有一个嵌套在链接中的链接,这将无效。

听起来你想要的行为是一个链接(1),只有当有current_orders时才会出现(如果没有则只显示一条消息),以及(2)可点击区域是整个div。这是对的吗?

如果是这样,(1)使用你的if语句有条件地渲染你的div,并且(2)将div放在'%a'标签内,就像这样。也许是这样的:

-if @current_orders > 0
  %a{:href => user_orders_path(current_user)}
    .current_orders.box.tile.one_third.lightblue
      .count
        %i.icon-shopping-cart
        =t('.current_orders')
        =@current_orders
- else
  .current_orders.box.tile.one_third.lightblue
    =t('.no_current_orders')