# Pass a global variable from a partial from javascript

**URL:** <https://www.ruby-forum.com/t/pass-a-global-variable-from-a-partial-from-javascript/160606>\
**Category:** Rails\
**Created:** [February 18, 2009, 4:13am UTC](https://www.ruby-forum.com/t/pass-a-global-variable-from-a-partial-from-javascript/160606 "2009-02-18T04:13:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [February 18, 2009, 4:13am UTC](https://www.ruby-forum.com/t/pass-a-global-variable-from-a-partial-from-javascript/160606/1 "2009-02-18T04:13:02Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [February 18, 2009, 9:29am UTC](https://www.ruby-forum.com/t/pass-a-global-variable-from-a-partial-from-javascript/160606/2 "2009-02-18T09:29:14Z")

</div>

On Feb 18, 3:12 am, David [removed\_email\_address@domain.invalid](mailto: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

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [February 18, 2009, 9:39am UTC](https://www.ruby-forum.com/t/pass-a-global-variable-from-a-partial-from-javascript/160606/3 "2009-02-18T09:39:16Z")

</div>

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.
