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>

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] %>