Noob Question D'Jour

Hello and thank you in advance.

I am fairly new to Ruby and Rails and am working on an app in order to
get more familiar. I feel I should be able to solve this problem on my
own but have thus far been stymied. Thanks for your help.

I used scaffold to generate the basic index/new/show/edit/destroy
methods for a given db entries and all works as it should. However, I
would like to add a new method – say “new_special” (for example) – in
the controller.

I would expect to do something like:

[foo_controller.rb]

def new_special
{some instructions}
end

however, when I browse to this (http://localhost:3000/foo/new_special

I see that the engine is trying to invoke the show method and pass it
“new_special” as an id. am very confused! I even deleted the ‘show’
method but it still calls it!

I’ve tried cycling the server and looked everywhere… thanks.

Alex

This is easy. Say you have a controller users_controller.rb, then in
config/routes.rb change:

map.resources :users

to:

map.resources :users, :collection => {:new_special => :get}

If you have any other questions, hit me up via twitter (@kconrails) or
my blog:

http://kconrails.com/contact_me/

Jaime

Cool. I think I get this (poked a page or two to understand what
“:collection” was. I’ll play around. thank you very kindly!

Jaime B. wrote:

This is easy. Say you have a controller users_controller.rb, then in
config/routes.rb change:

map.resources :users

2010/1/17 Jaime B. [email protected]:

This is easy. Â Say you have a controller users_controller.rb, then in
config/routes.rb change:

map.resources :users

to:

map.resources :users, :collection => {:new_special => :get}

Another alternative which is often appropriate is to use the standard
new action but to pass optional additional params in the url to tell
it what is ‘special’.

Colin

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs