2012-11-21 17 views
11

mam te działania kontrolera użytkownikówDodaj nową akcję na trasie

class UsersController < ApplicationController 
    def index #default action 
    ... 
    end 

    def new #default action 
    ... 
    end 

    def another_new 
    ... 
    end 

    def create 
    ... 
    end 

    def another_create 
    ... 
    end 
end 

Chcę móc /users/another_new i dzwonić z jakiegoś linku :method => :another_create aby /users/another_new

mam następujące config/routes.rb

get '/users/another_new' :to => 'users#another_new' 
resources :users 

moje pytanie brzmi, czy to jest poprawny sposób na dodanie get oraz sposób dodawania metody else_create.

Odpowiedz

24

w pliku config/routes.rb zrobić

resources :users do 
    collection do 
    get 'another_new' 
    post 'another_create' 
    end 
end 

Również spojrzeć HERE dla zrozumienia pojęć.

Nadzieja to pomaga dude :)

+0

Koleś jesteś ratownikiem! –

3

spróbować tego w routes.rb

match "https://stackoverflow.com/users/another_new " => "users#another_new", :as => 'another_new' 

wtedy można zrobić

link_to "MyUrl", another_new_path 

to powinno działać. Powodzenia.

+0

Kolejność linii wewnątrz routes.rb jest bardzo ważna. Ścieżka niestandardowa (w obrębie obiektów) musi pojawiać się powyżej i przed zasobami: definicja obiektów. –

1

Należy również pamiętać, że nie należy mieć :method => :another_new. Opcje dla :method to :get, :put, i :delete, a używane przez Ciebie powinny odpowiadać temu, jak zdefiniowałeś akcję na trasach.

Powiązane problemy