【问题标题】:Ruby On Rails RoutesRuby On Rails 路线
【发布时间】:2011-02-15 14:52:04
【问题描述】:

我不知道如何获得以下路线。这是我的 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 的操作,如果您没有登录,或者没有登录。问题是,如果我更改路线,当我尝试创建一个新的预订时我已经登录,那么它不会发布表单提交,只是让我回到查看页面.这绝对是因为路线好像我将 map.resources :bookings 重新安排在所有路线之前,然后它就可以了。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    根据经验,您希望资源路由位于通用 :controller/:action/:id 路由之前(事实上,我甚至完全删除了通用路由),因为首先定义的路由优先于以后分配的。

    至于在用户未登录时重定向到 /bookings/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
    

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多