A simple problem....

Hey guys - thanks for reading this.

I'm trying to use the onclick event to redirect the user via a ruby function. The code is within a "view" html.erb file. The original table has an entry that works perfectly fine:

[code] <td><%= link_to 'Show', project%></td> [/code]

...but I'd like for the user to be able to click anywhere on that row and be directed to the "show" page. If you're feeling generous, can you also explain why, in this case, "project" suffices, while in this case:

[code] <td><%= link_to 'Edit', edit_project_path(project) %></td> [/code]

I say "edit_project_path(project)"? Where would this method be located? My attempt for the onclick event:

<tr onmouseover="ChangeColor(this, true);"               onmouseout="ChangeColor(this, false);"               onclick="<%= remote_function( :url => { :controller => 'projects', :action => 'show', :id => project.id }) %>;" [/code]

The ChangeColor methods are defined and function properly, but clicking the row does nothing :(.

Thanks again for your time :).

Hey guys - thanks for reading this.

I'm trying to use the onclick event to redirect the user via a ruby function. The code is within a "view" html.erb file. The original table has an entry that works perfectly fine:

[code] <td><%= link_to 'Show', project%></td> [/code]

...but I'd like for the user to be able to click anywhere on that row and be directed to the "show" page. If you're feeling generous, can you also explain why, in this case, "project" suffices, while in this case:

[code] <td><%= link_to 'Edit', edit_project_path(project) %></td> [/code]

I say "edit_project_path(project)"? Where would this method be located?

This method is created for you by rails, based on your routes. There is another helper, project_path that gives the path for the show action, but you don't have to use that as link_to assumes that's what you want to do if you just pass it an active record object.

My attempt for the onclick event:

<tr onmouseover="ChangeColor(this, true);" onmouseout="ChangeColor(this, false);" onclick="<%= remote_function( :url => { :controller => 'projects', :action => 'show', :id => project.id }) %>;" [/code]

The ChangeColor methods are defined and function properly, but clicking the row does nothing :(.

What does your controller code look like ? Is the request made ? does this product syntactically correct html (eg it wouldn't if the output from remote_function contained a " ) ?

Fred

What does your controller code look like ? Is the request made ? does this product syntactically correct html (eg it wouldn't if the output from remote_function contained a " ) ?

Fred

Thanks for the help Fred,

Hmmm...the produced HTML reads as follows:

<tr onmouseover="ChangeColor(this, true);"               onmouseout="ChangeColor(this, false);"               onclick="new Ajax.Request('/projects/1', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('EFK4UoM20XdzwDeneOTmVqtQYqG3Lgp+9swBrULFUsw=')});">

My controller code does contain a "show" def, which is requested in the ":action =>" declaration. When the working link is clicked, the "show" def does the following correctly:

def show     @project = Project.find(params[:id])

    respond_to do |format|       format.html # show.html.erb       format.xml { render :xml => @project }     end   end

But the remote_function does not.