Forum: Ruby on Rails using #{} with instance variables inside prototypes $$()

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Adam A. (Guest)
on 2009-02-19 14:47
I want to do something like this in a link_to_remote call in a view

:before => '$$("tr#task_#{completed_task.id} >
td.task-title-cell").update("Reactivating")'

but the number of ' and " in the string are not allowing  my
#{completed...} to work. Its just being read as characters and not as a
request to insert the value of the contained variable.

How do i get round this and are there any tips for this? people must be
using #{} within their prototype code a lot and it must look messy. is
there a cleaner way?
Felix (Guest)
on 2009-02-19 15:22
(Received via mailing list)
:before => "$$('tr#task_#{completed_task.id} > td.task-title-
cell').update('Reactivating')"

should do the trick. Also you probably need to add a .first() after
your $$() selector, since it always returns an array as far as i
know.

As for your question regarding style, I think there isn't really a
better alternative and also I don't think it looks too messy ... . if
your selector gets really long and ugly you could assign it to a
variable first, like:

selector = "tr#task_#{completed_task.id} > td.task-title-cell"

and then:

:before => "$$('#{selector}').first().update('Reactivating')"

On Feb 19, 1:47 pm, Adam A. <removed_email_address@domain.invalid>
MaD (Guest)
on 2009-02-19 15:24
(Received via mailing list)
your outermost quote is a single one ( ' ). that way rails won't
insert the value of your variable.
you could simply try to swap single and double quotes.
another way would be to introduce additional variables with substrings
or just form your string with +

example:
  array = ["big", "little"]
  substring = array[1]
  string = "my " + substring + " string is actually quite #{array[0]}"
This topic is locked and can not be replied to.