Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating new rails action doesn't work?

i have a controller "Apps". It consists of one action "index". Now I want to add a new action called "buy":

def buy
  respond_to do |format|
    format.html
  end
end

i added a buy.html.erb to the views, but when browsing to /apps/buy, i get following message:

Unknown action - The action 'show' could not be found for AppsController

in the routes I added this:

  match '/apps/buy', :controller => 'apps', :action => 'buy'

thanks in advance!

like image 367
trnc Avatar asked Nov 30 '10 10:11

trnc


1 Answers

The url is being caught by the standard /apps/:id route, I assume you also have resources :apps in your routes?

Simply place the buy route first:

match '/apps/buy', :controller => 'apps', :action => 'buy'
resources :apps

Bear in mind that routes are executed in the order they are defined, so the specific ones need to precede the general.

A simpler approach as @Ryan suggests is adding a collection route to the resource:

resources :apps, :collection => { :buy => :get }
like image 184
Adam Lassek Avatar answered Nov 14 '22 08:11

Adam Lassek