我正在尝试让自定义路由在我的 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
和用户/注册。我该如何防止这种情况发生。或者更好地确保默认情况下所有对 users/sign_in 等的请求都转到相关路由,而不是 Devise 生成的默认路由。
另外,如何使登录表单成为部分内容以将其包含在任何控制器中?这样我就可以在主页(home#index)上显示登录页面,而不是在 users/sign_in 上?
我在 Mac OSX Snow Leopard 上的 Ruby 1.9.2 上使用 Devise 1.1.3 和 Rails 3。
Thanks!
对于 Devise 1.1.3,以下内容应该可以工作
devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }
它创建的路由不会附加“/user/...”,因为:path
参数为空字符串。这:pathnames
hash 会按照你的喜好命名路由。 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 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' %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)