Rails div不渲染?

时间:2014-10-29 00:59:45

标签: html ruby-on-rails ruby

我有一个简单的应用程序,我跟随教科书。它是一个商店应用程序,在页面的一侧显示购物车。但是,当购物车为空时,它应该被隐藏。所以我编写了一个辅助函数,以便在它为空时隐藏它。这本来就足以在html中完成,但这是本书的表现方式。它主要起作用。如果我清空了购物车,它就会停止显示,但是当我第一次打开页面时,即使它不是空的,购物车也是不可见的!向其中添加项目将会显示它。

以下是代码:

application.html.erb

<div id="cart">
        <% if @cart %>
         <% hidden_div_if( @cart.line_items.empty?, id:"cart" ) do %>
             <%= render @cart %>
         <% end %>
      <%end%>
</div> 

application_helper.rb

模块ApplicationHelper

  def hidden_div_if(condition, attributes = {}, &block)
    debugger
    if(condition)
      attributes["style"] = "display: none"
    end
    content_tag("div", attributes, &block)
  end

end

在我放置调试器语句的地方,我检查了条件,并说它是假的。所以,我认为这是html文件的一个问题。控制器手动设置购物车,顶部显示此代码。

      include CurrentCart
  before_action :set_cart

所以,我不确定为什么它会在按下按钮后显示,而不是在初始页面加载时显示。有什么想法吗?

感谢

1 个答案:

答案 0 :(得分:1)

如果要输出辅助方法的返回值,则需要在erb中以<%=开头。将您调用辅助方法的行更改为:

<%= hidden_div_if(@cart.line_items.empty?, id: "cart") do %>