Forum: Ruby on Rails Pass a global variable from a partial from javascript

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.
David (Guest)
on 2009-02-18 05:13
(Received via mailing list)
I have a situation that I am not sure how to approach.  I have a
global variable @date which gets loaded in an ajax action:

  def calendar_ajax
    @date = Time.parse("#{params[:date]} || Time.now.utc")

This @date is used to find events for the calendar.
A partial is then rendered:

          render :update do |page|
              page.replace_html "internal_calendar_box", :partial =>
'calendar_large_data'
          end

I then have javascript functions which are within tabs and triggered
by an onclick that then create an ajax request in order to populate
the calendar with a different kind of request.  The problem I am
facing is that the javascript function needs to send the current @date
variable, which changes upon the change of a month, but the original
@date object is always being passed.  I think the problem lies in the
fact that this javascript function does not see the new @date objects
that are being created when the month is changed and a new partial is
created.  I tried sticking these functions within the partial itself,
but that does not seem to work.  Anyone have any ideas?
Frederick C. (Guest)
on 2009-02-18 10:29
(Received via mailing list)
On Feb 18, 3:12 am, David <removed_email_address@domain.invalid> wrote:
>               page.replace_html "internal_calendar_box", :partial =>
> that are being created when the month is changed and a new partial is
> created.  I tried sticking these functions within the partial itself,
> but that does not seem to work.  Anyone have any ideas?

I;m not entirely sure what is going on (eg how does the original date
object get set in javascript), but if you are expecting your
javascript to  magically react to the change of a controller instance
variable that isn't going to happen.
Depending on what it is that is going on you may find that adding

page.assign('some_variable', 'some_value')

to your render :update block does the trick.

Fred
Felix (Guest)
on 2009-02-18 10:39
(Received via mailing list)
I am not quite sure I am following, but I understand that after
updating your calendar using the method you provided you are trying to
submit the current date back to the server whenever a user clicks to
change the month? To understand what's going what's going on I would
have to see your calendar partial and how you are trying to submit the
date. For now I can only say that of course javascript can not access
a ruby variable directly. You can use ruby/erb to generate javascript
and thus indirectly pass ruby variables.
This topic is locked and can not be replied to.