我有一个简单的应用程序,我跟随教科书。它是一个商店应用程序,在页面的一侧显示购物车。但是,当购物车为空时,它应该被隐藏。所以我编写了一个辅助函数,以便在它为空时隐藏它。这本来就足以在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
所以,我不确定为什么它会在按下按钮后显示,而不是在初始页面加载时显示。有什么想法吗?
感谢
答案 0 :(得分:1)
如果要输出辅助方法的返回值,则需要在erb中以<%=
开头。将您调用辅助方法的行更改为:
<%= hidden_div_if(@cart.line_items.empty?, id: "cart") do %>