Trying to come up with a more compact way of expressing this conditional in HAML and Ruby, perhaps with a ternary operator:
- if @page.nil?
%br (nothing yet)
- else
%br #{@page.name}
(looking for similar approach as per Neat way to conditionally test whether to add a class in HAML template)
Your help would be appreciated :)
Simply do:
The code you have makes the text a child of the
<br>
element; that is not desirable. What you really meant, I think, was:For this you can simply do:
Or
Or simply:
However, personally I would 'fix' this in the controller so that you always have a
@page
, with something like:With this you can stub out what a new/empty/nothing page looks like and let your view treat it like any other. Your
@page
still won't have a@page.id
, so you can use that for tests to decide if you are creating a new item or editing an existing one.This is how I handle all my forms that may be used to create or edit an item: provide defaults by creating (but not adding to the database) an item with the default values.
Aside: You're creating a
<br>
which is almost never a good idea, and you're creating it with Haml which should not be used for content markup. You might step back and think about what you're doing.You can also embed in a string assuming
- order_count = 12
:%h5= Ordered #{ order_count == 1 ? "1 item" : "#{order_count} items" } for this session