ruby-on-rails - 设计自定义路由和登录页面

标签 ruby-on-rails ruby routing devise partials

我正在尝试让自定义路由在我的 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/

相关文章:

javascript - Rails 在 javascript 调用后更新 DIV(从模型重新加载)

ruby-on-rails - NameError - 运行开发服务器时未初始化常量

ruby-on-rails - RSpec - 如何创建可用于自动嵌入 "it"测试的测试的辅助方法

ruby - 如何在 selenium-webdriver 中获取网页的当前 URL

ruby-on-rails - rails 3.2 中的奇怪路由错误

ruby-on-rails - Heroku 可以作为版本控制吗?

sql - 为什么这条SQL会生成一个临时表而且运行的很慢?

ruby - 我正在学习 Ruby,我不清楚 :* means in inject(:*) 是什么

laravel - Laravel错误Symfony\Component\HttpKernel\Exception\HttpException

asp.net-mvc - ASP.NET MVC-生成没有Http/请求上下文的路由