2010-05-04 134 views
0

我无法弄清楚如何获得以下路线。下面是从我的routes.rb文件的摘录:Ruby On Rails路线

map.resources :treatments 
    map.root :controller => "home" 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
    map.connect ':action', :controller => 'home' # replaces the need to manually map pure actions to a default controller 

    map.resources :bookings 
    map.resource :dashboard 
    map.resource :home 

现在我也知道了排序的问题,但我似乎无法让他们正常工作。

我想要的是如此http://localhost:3000/bookings/new实际上会带你到一个行动http://localhost:3000/bookings/signmeup如果你没有登录,或没有登录。问题是,如果我改变我的路线,当我尝试在之后创建新的预订时,我已经登录,那么它不会发布表单提交,并将我带回到查看页面。这绝对是因为路线,如果我重新排列map.resources:预订在他们之前,然后它的作品。

任何想法?

回答

0

作为一个经验法则,你希望你的资源路由在通用的:controller/:action/:id路由之前(实际上,我甚至完全删除通用路由),因为首先定义的路由优先于那些稍后分配。

至于重定向到/预订/ signmeup如果用户没有登录,您应该处理与before_filter

class BookingsController < ApplicationController 
    before_filter :check_login 

    # ... 

    protected 
    # This is a GENERIC example; change to fit your authentication method 
    def check_login 
     unless user_is_logged_in 
     redirect_to ... 
     end 
    end 
end