# Problem using Javascript with Rails

**URL:** <https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633>\
**Category:** Rails\
**Created:** [April 2, 2008, 6:34pm UTC](https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633 "2008-04-02T18:34:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![tensaijin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/d6d6ee/32.png) [@tensaijin](https://www.ruby-forum.com/u/tensaijin)\
**Post date:** [April 2, 2008, 6:34pm UTC](https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633/1 "2008-04-02T18:34:58Z")

</div>

Hello,

I am new to Ruby and I am currently creating a webpage which lists bug  
_stats_ information for various development teams. Each team is  
represented on the page with an image.  
When a team’s link is clicked, I want 2 things to happen:

1. Javascript needs to call the displayLogo() method to handle visual  
effects
2. Ruby needs to call the loadCustomLinks() method to display a link

Current Behavior: When a team link is clicked, the javascript effects  
appear  
and then disappear, followed by the display of the  
team’s  
custom link.

Expected Behavior: When a team link is clicked, I want the javascript  
effects  
to STAY active after the custom link is displayed.

I expect that my issue is more related to Javascript than to Ruby, but I  
also want to make sure that I am using good Ruby programming  
practices…

Any help is appreciated,

JT

`
#
home_controller.rb------------------------------------------------------------
class HomeController < ApplicationController
layout ‘mainLayout’
def index
end
def loadCustomLinks
@team_links = " Special Team Link
#1
"
end
end
javascript
(embedded)---------------------------------------------------------
function displayLogo(name)
{
// De-select last selected item
document.images[lastName].src = “/images/” + lastName + “.png”;
// Highlight team icon
document.images[name].src = “/images/” + name + “_hover.png”;
// Activate team banner
document.images[“logo”].src = “/images/logo_” + name + “.png”;
// Re-activate siteBanner (TEMP FIX)
document.images[“siteBanner”].src = “/images/logo_dashboard.png”;
// Set lastName
lastName = name;
} // end displayLogo()

#layout.rhtml
<%= link_to(image_tag(’/images/banner_team1.png’,
:id => ‘bannerImgAlign’, :name => ‘banner_team1’,
:style => ‘border:0’, :onclick => ‘displayLogo(“banner_team1”)’),
:action => ‘loadCustomLinks’) %>
`

---

<div class="post-metadata">

**Author:** ![tensaijin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/d6d6ee/32.png) [@tensaijin](https://www.ruby-forum.com/u/tensaijin)\
**Post date:** [April 2, 2008, 6:50pm UTC](https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633/2 "2008-04-02T18:50:21Z")

</div>

On 2 Apr 2008, at 17:34, Jt Taylor wrote:

> 1. Ruby needs to call the loadCustomLinks() method to display a link
> 
> I expect that my issue is more related to Javascript than to Ruby,  
> but I  
> also want to make sure that I am using good Ruby programming  
> practices…

It is just the way things works: the browser calls your javascript  
function and since it doesn’t return an appropriate value it proceeds  
onto the default action (load the page specified). Since the page  
loads any temporary javascript changes you made to the page are blown  
away.  
If you’re want to do things like this you can drop the javascript  
completely. Just make your loadCustomLinks view display the right  
images.

Fred

---

<div class="post-metadata">

**Author:** ![tensaijin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/d6d6ee/32.png) [@tensaijin](https://www.ruby-forum.com/u/tensaijin)\
**Post date:** [April 2, 2008, 7:58pm UTC](https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633/3 "2008-04-02T19:58:42Z")

</div>

Frederick C. wrote:

> On 2 Apr 2008, at 17:34, Jt Taylor wrote:
> 
> > 1. Ruby needs to call the loadCustomLinks() method to display a link
> > 
> > I expect that my issue is more related to Javascript than to Ruby,  
> > but I  
> > also want to make sure that I am using good Ruby programming  
> > practices…
> 
> It is just the way things works: the browser calls your javascript  
> function and since it doesn’t return an appropriate value it proceeds  
> onto the default action (load the page specified). Since the page  
> loads any temporary javascript changes you made to the page are blown  
> away.  
> If you’re want to do things like this you can drop the javascript  
> completely. Just make your loadCustomLinks view display the right  
> images.
> 
> Fred

Ok, that makes sense…

However you say an appropriate value is not returned, and I thought  
using ‘return false;’ would essentially ignore the redirect action,  
which it doesn’t…

Also, I see 2 ways I can proceed with your suggestion:

1. Invoke the javascript method(s) through my loadCustomLinks method
2. Translate the javascript code to ruby code and place it in  
loadCustomLinks

…I don’t think there is a straight-forward way to do #1 without adding  
plugins  
I would rather do #2 as it seems a better alternative. Could you help me  
get started with how to write the code for this method?

---

<div class="post-metadata">

**Author:** ![tensaijin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/d6d6ee/32.png) [@tensaijin](https://www.ruby-forum.com/u/tensaijin)\
**Post date:** [April 2, 2008, 8:40pm UTC](https://www.ruby-forum.com/t/problem-using-javascript-with-rails/196633/4 "2008-04-02T20:40:33Z")

</div>

On 2 Apr 2008, at 18:58, Jt Taylor wrote:

> > >
> 
> Ok, that makes sense…
> 
> However you say an appropriate value is not returned, and I thought  
> using ‘return false;’ would essentially ignore the redirect action,  
> which it doesn’t…

It will but you’d have to say onclick=“displayLogo(…); return false”  
or “return displayLogo(…)” and have displayLogo return false

> Also, I see 2 ways I can proceed with your suggestion:
> 
> 1. Invoke the javascript method(s) through my loadCustomLinks method
> 2. Translate the javascript code to ruby code and place it in  
> loadCustomLinks
> 
> …I don’t think there is a straight-forward way to do #1 without  
> adding  
> plugins

Well you could do 1, but honestly I don’t see the point

> I would rather do #2 as it seems a better alternative. Could you  
> help me  
> get started with how to write the code for this method?

Well your link will need to pass through the parameter used. Then in  
your layout/view it’s just a case of using that parameter (probably  
assigned to an instance variable first) to make all those links to the  
various images.

Fred
