Embedded expressions in ERB

I’m stuck in trying to get an embedded expression in ERB.

I’m trying to put @post into @httppost. However when I print @httppost I
get (notice the @post):
{“aps”: {“badge”: 1, “alert”, #{@post}}, “sound”: “cat.caf”,
“device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}

It should say:
{“aps”: {“badge”: 1, “alert”, “This is a test”}, “sound”: “cat.caf”,
“device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}

I put everything in my view to make it easier to troubleshoot:

<% @post = params[:post] %>

post params: <%= @post %>


<% @httppost = ‘{“aps”: {“badge”: 1, “alert”, “#{@post}”}, “sound”:
“cat.caf”, “device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}’
%>

<%= @httppost %>

You can see the enclosed screen capture to see what my results are.
Thanks in advance.

On Mar 4, 2010, at 4:27 PM, Allan L. wrote:

It should say:
post params: <%= @post %>


<% @httppost = ‘{“aps”: {“badge”: 1, “alert”, “#{@post}”}, “sound”:
“cat.caf”, “device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}’
%>

You’ve got it wrapped in single quotes… which won’t interpolate.
You want double quotes… or in your case since you’ve got a lot of
double quotes you probably don’t want to escape… use the %Q method…

<% @httppost = %Q!{“aps”: {“badge”: 1, “alert”, “#{@post}”}, “sound”:
“cat.caf”, “device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}!

The ‘!’ can be whatever you want (I think) so pick something that
isn’t in your string. If it’s paired (ie %Q{…}) use the opening/
closing keys.

-philip

Philip,

Thanks a lot! This really helped me!

-A

Philip H. wrote:

On Mar 4, 2010, at 4:27 PM, Allan L. wrote:

It should say:
post params: <%= @post %>


<% @httppost = ‘{“aps”: {“badge”: 1, “alert”, “#{@post}”}, “sound”:
“cat.caf”, “device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}’
%>

You’ve got it wrapped in single quotes… which won’t interpolate.
You want double quotes… or in your case since you’ve got a lot of
double quotes you probably don’t want to escape… use the %Q method…

<% @httppost = %Q!{“aps”: {“badge”: 1, “alert”, “#{@post}”}, “sound”:
“cat.caf”, “device_tokens”:
[“455ab1b23cbfd97b7d2ef90a49d222e40f4c6c9b2570e84ff94fe4afeea12345”]}!

The ‘!’ can be whatever you want (I think) so pick something that
isn’t in your string. If it’s paired (ie %Q{…}) use the opening/
closing keys.

-philip