2010-06-15 29 views
6

Trong Rails 2, chúng ta có thể thêm tùy chỉnh new hành động để các tuyến đường vát, như:Thêm tùy chỉnh: các tuyến đường mới sử dụng Rails 3 tuyến

map.resources :users, :new => {:apply => :get} 

Làm thế nào để chúng ta đạt được điều tương tự trong Rails 3?

resources :users do 

    get :apply, :on => :new # does not work 

    new do 
    get :apply    # also does not work 
    end 

end 

Bất kỳ ý tưởng nào?

Trả lời

6

Bạn có thể sử dụng :path_names như explained trong hướng cạnh định tuyến:

resources :users, :path_names => { :new => "apply" } 

Điều đó sẽ chỉ thay đổi đường dẫn đến apply, nó vẫn sẽ được chuyển đến các hành động new. Tôi không nghĩ rằng việc thay đổi được hỗ trợ một cách rõ ràng nữa (đó có lẽ là một điều tốt).

Nếu bạn muốn giữ lại hành động apply của bạn, có lẽ bạn nên làm:

resources :users, :except => :new do 
    collection do 
    get :apply 
    end 
end 

Nhưng nó để lại cho bạn tự hỏi liệu nó không phải là tốt hơn để chỉ đổi tên các hành động apply-new.

4

Hãy thử điều này:

resources :users, :path_names => { :new => 'apply' } 

Lưu ý rằng nếu bạn muốn tái lập bản đồ các tuyến đường new-apply cho tất cả các tuyến đường của bạn thì bạn có thể sử dụng một phạm vi:

scope :path_names => { :new => 'apply' } do 
    # The rest of your routes go here... 
end 
Các vấn đề liên quan