我无法弄清楚如何获得以下路线。这是我的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行动。问题是,如果我改变我的路线,当我尝试在之后创建一个新的预订我已经登录,那么它不会POST表单提交,只是让我回到视图页面。这绝对是因为路线好像我重新排列了map.resources:预订在所有这些之前,然后才有效。
有什么想法吗?
答案 0 :(得分:0)
根据经验,您希望资源路由在通用: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