代码之家  ›  专栏  ›  技术社区  ›  Kieran Senior

Ruby on Rails路线

  •  0
  • Kieran Senior  · 技术社区  · 16 年前

    我不知道怎么走下面的路。以下是我的routes.rb文件的摘录:

      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 如果您没有登录或没有登录。问题是,如果我改变我的路线,当我试图创建一个新的预订 之后 我已经登录,然后它不会发布表单提交,只会将我带回到视图页面。这肯定是因为我重新安排了地图资源的路线:先预订,然后再预订。

    有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Robert Speicher    16 年前

    根据经验,您希望您的资源路由先于常规路由 :controller/:action/:id 路由(实际上,我甚至完全删除了一般路由),因为首先定义的路由优先于稍后分配的路由。

    至于重定向到/预订/注册如果用户没有登录,您应该用 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