Clean way to "inject" raw text from within a <%%> block?

Source :
<% case list_type.upcase
when "BASE" then %> Base Coverages
<% when "OPTIONAL" then %> Optional Coverages
<% else "asdfadasdF" %> Bogus
<% end %>

The above just looks sloppy to me...

I would have hoped for something like...

<% case list_type.upcase
when "BASE" then inject("Base Coverages")
when "OPTIONAL" then inject("Optional Coverages")
else "asdfadasdF" then inject("Bogus")
end %>

I hate matching up the <%... 's. It is just to prone to error.

Jason

Hello Jason,

<% case list_type.upcase
when "BASE" then %> Base Coverages
<% when "OPTIONAL" then %> Optional Coverages
<% else "asdfadasdF" %> Bogus
<% end %>

case returns it's value, so you can do it like this:

<%= case list_type.upcase
when 'BASE'; "Base Coverages"
when 'OPTIONAL'; "Optional Coverages"
else; "whatever
end %>

Hope that helps !

Hello Jason,

Source :
<% case list_type.upcase
when "BASE" then %> Base Coverages
<% when "OPTIONAL" then %> Optional Coverages
<% else "asdfadasdF" %> Bogus
<% end %>

The above just looks sloppy to me...

I would have hoped for something like...

<% case list_type.upcase
when "BASE" then inject("Base Coverages")
when "OPTIONAL" then inject("Optional Coverages")
else "asdfadasdF" then inject("Bogus")
end %>

you're not far :

<%= case list_type.upcase
   when 'BASE' : 'Base Coverages' # different style
   when "OPTIONAL" then "Optional Coverages"
   else "asdfadasdF" then "Bogus"
end %>

You can also use an Hash with "Bogus" as default value.

    -- Jean-François.

Both of these are great. Is there a general technique to this? If I
had done with an "If..Elsif..." block, what would it have looked like?
And is there a way to "inject" text?

Thanks,
Jason

Jason :

Both of these are great. Is there a general technique to this? If I
had done with an "If..Elsif..." block, what would it have looked like?

<%= if list_type.upcase =='BASE'
   'Base Coverages'
else
  'Bogus' %>

Or using ? :
<%= list_type.upcase == 'BASE' ? 'Base Coverages' : 'Bogus' %>

Note that in Ruby code, you can do assignments like that :

foo = if something == something_else
  'bar'
else
  'baz'
end

but ? : will be more often used.
And you can use case/when as well

foo = case ..
  when ...
end

And is there a way to "inject" text?

yes : _erbout.concat('foo')

don't forget also, that helpers can make your ERb code cleaner.

   -- Jean-François.