我正在尝试让自定义路由在我的 Rails 应用程序(Ruby 1.9.2 和 Rails 3)中工作。
这是我的 config/routes.rb 文件
match '/dashboard' => 'home#dashboard', :as => 'user_root'
devise_for :user do
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
end
但是在/login 或/register 上提交表单会转到 users/sign_in 和用户/注册。我该如何防止这种情况发生。或者甚至更好地确保默认情况下对用户/登录等的所有请求都转到相关路由,而不是 Devise 生成的默认路由。
另外,我怎样才能使登录表单部分包含在任何 Controller 中?这样我就可以在主页 (home#index) 而不是 users/sign_in 上拥有登录页面?
我在 Ruby 1.9.2 和 Mac OSX Snow Leopard 上使用 Devise 1.1.3 和 Rails 3。
谢谢!
最佳答案
对于 Devise 1.1.3,以下应该可以工作
devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }
它创建的路由不会附加“/user/...”,因为 :path
参数是一个空字符串。 :pathnames
散列将根据您的喜好来命名路由。 Devise 将在内部使用这些路由,因此提交到/login 将按照您的意愿工作,而不是将您带到/user/log_in
要将登录表单添加到您的首页,请在 Devise Wiki 上找到相关信息: http://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app
或者做这样的事情:
<%= form_tag new_user_session_path do %>
<%= text_field_tag 'user[email]' %>
<%= password_field_tag 'user[password]' %>
<%= submit_tag 'Login' %>
关于ruby-on-rails - 设计自定义路由和登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827011/