routes problem

Hi all,

In a sample project, I have a nested resource called ticket, and parent resource called project.

rake routes: ... project_tickets GET /projects/:project_id/tickets(.:format)                        {:action=>"index", :controller=>"tickets"}

                POST /projects/:project_id/tickets(.:format)                       {:action=>"create", :controller=>"tickets"} ...

but when I go to http://127.0.0.1:3000/projects/7/tickets/ I have this routing error:

No route matches {:action=>"show", :controller=>"tickets",                   :project_id=>nil, :id=>#<Project id: 7,                    name: "bla...bla", created_at: "2011-11-29 14:39:51",                    updated_at: "2011-11-29 14:39:51">}

It invokes the show action and not the index action. Why?

Hi all,

In a sample project, I have a nested resource called ticket, and parent resource called project.

rake routes: ... project_tickets GET /projects/:project_id/tickets(.:format) {:action=>"index", :controller=>"tickets"}

            POST   /projects/:project\_id/tickets\(\.:format\)
                  \{:action=&gt;&quot;create&quot;, :controller=&gt;&quot;tickets&quot;\}

...

but when I go tohttp://127.0.0.1:3000/projects/7/tickets/I have this routing error:

No route matches {:action=>"show", :controller=>"tickets", :project_id=>nil, :id=>#<Project id: 7, name: "bla...bla", created_at: "2011-11-29 14:39:51", updated_at: "2011-11-29 14:39:51">}

It invokes the show action and not the index action. Why?

It's also doing weird stuff because it hasn't picked a project_id from the url but it has picked an id. Do you have any other routes that might be matching this url instead of the ones that you intended to be used?

Fred

Frederick Cheung wrote in post #1034554:

        POST /projects/:project_id/tickets(.:format)

It invokes the show action and not the index action. Why?

It's also doing weird stuff because it hasn't picked a project_id from the url but it has picked an id. Do you have any other routes that might be matching this url instead of the ones that you intended to be used?

Fred

Hi Frederick,

I have only the standard REST routes generated by Rails, with

MyProject::Application.routes.draw do

  get "projects/index"

  root :to=> 'projects#index'

  resources :projects do     resources :tickets   end

in your path are you sending the project object as params?

thiagocifani wrote in post #1034560:

in your path are you sending the project object as params?

> root :to=> 'projects#index' "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

-- thiagocifani http://thiagocifani.wordpress.com/ twitter.com/thiagocifani del.icio.us/thiagocifani <http://del.icio.us/thiagocifani&gt;

No, I am not sending the project object as param, perhaps looking at tickets controller may be useful ?

class TicketsController < ApplicationController

before_filter :find_project, :only=>[:new,:create,:show,:index]

def find_project

   begin           @project = Project.find(params[:project_id])    rescue ActiveRecord::RecordNotFound           flash[:error]="The project you were looking for could not be                         found"           redirect_to root_path    end

end

private :find_project

Vogon Primo wrote in post #1034547:

Hi all,

In a sample project, I have a nested resource called ticket, and parent resource called project.

rake routes: ... project_tickets GET /projects/:project_id/tickets(.:format)                        {:action=>"index", :controller=>"tickets"}

                POST /projects/:project_id/tickets(.:format)                       {:action=>"create", :controller=>"tickets"} ...

but when I go to http://127.0.0.1:3000/projects/7/tickets/ I have this routing error:

No route matches {:action=>"show", :controller=>"tickets",                   :project_id=>nil, :id=>#<Project id: 7,                    name: "bla...bla", created_at: "2011-11-29 14:39:51",                    updated_at: "2011-11-29 14:39:51">}

It invokes the show action and not the index action. Why?

Ok, I am sorry but, it was my error . In index.html.erb I had

<%=link_to ticket.title,project_ticket_path(@project,@path)%>

this, on the contrary of what is present in some online RoR examples, doesn't work for me. I have changed it with

<%=link_to ticket.title,[@project,@path] %>