我正在try 在我的Rails应用程序(Ruby 1.9.2和Rails 3)中使用自定义路由.

这是我的配置/路由.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上提交表单的用户是/sign_in

另外,我如何使登录表单成为一个部分,以便将其包含在任何控制器中?这样我就可以在主页(主页#索引)上登录页面,而不是在用户/登录页面上?

我在Ruby 1.9.2和Mac OSX Snow Leopard上使用Desive 1.1.3和Rails 3.

谢谢

推荐答案

在Desive 1.1.3中,以下各项应起作用:

devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

它创建的路由将不会附加"/user/…"因为:path参数是空字符串.:pathnames散列将根据您的喜好命名路由.Desive将在内部使用这些路由,因此提交到/登录将按照您的意愿工作,而不是将您带到/user/log_

要将登录表单添加到头版,请访问Desive Wiki:

或者像这样做:

 <%= form_tag new_user_session_path do %>
  <%= text_field_tag 'user[email]' %>
  <%= password_field_tag 'user[password]' %>
 <%=  submit_tag 'Login' %>

Ruby-on-rails相关问答推荐

无法安装Ruby错误运行';__rvm_make-J4';,

Rails 7中的Turbo流

SASS,Rails 7:找不到要导入的样式表

轨道强参数,怎么允许空参数?

关于关联 has_many 的多级/三重嵌套形式

Ruby Sinatra Web 服务在 localhost:4567 上运行,但不在 IP 上

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

跳过模型中的某些验证方法

使用 ActiveRecord 3 / Arel 查找单个记录的最佳方法?

添加自定义字段/列以使用 Rails 4 进行设计

Heroku 错误 R14(超出内存配额):我该如何解决?

未定义的方法 attr_accessible

在 PostgreSQL 中强制字符串的最大长度

如果缺少翻译,则回退到默认语言

我可以将默认值传递给 rails 生成迁移吗?

如何在 ROR (Ruby) 中显示 PDF?

您将如何在 RoR 中创建类似 SO 或 Facebook 的通知系统?

Rails 3 返回 HTTP 406 Not Acceptable?

Ruby 中有与 slice 函数相反的函数吗?

如何在 Rails 3 中订购包含的元素