Will
Will

Reputation: 189

Rails div not rendering?

I have a simple app I'm following from a textbook. It's a store app and on the oft side of the page a shopping cart is shown. However, when the cart is empty it is supposed to be hidden. So I wrote a helper function to hide the cart whenever it is empty. This would have been east enough just to do in the html but it's how the book shows it. It works mostly. If I empty the cart it stops being displayed, but when I first open the page the cart will be invisible even if its not empty! Adding an item to it will then reveal it.

Here's the code:

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

module ApplicationHelper

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

end

Where I put the debugger statement, I checked the condition and it says it's false. So, I thin it's an issue with the html file. The controller sets the cart before hand with this code at the top.

      include CurrentCart
  before_action :set_cart

So, I'm not sure why it would show after a button is pressed but not on the initial page load. Any ideas?

thanks

Upvotes: 0

Views: 127

Answers (1)

spickermann
spickermann

Reputation: 106782

You need to start with <%= in erb if you want to output the return value of a helper method. Change the line in which you call your helper method to:

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

Upvotes: 1

Related Questions