Lea*_*RoR 2 ruby-on-rails devise
当我在https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes关注Devise Wiki时,我的默认路由名称根本不会改变,这是我的代码:
MyApp::Application.routes.draw do
root :to => "profile#index"
devise_for :users
namespace :user do
root :to => "profile#index"
end
as :user do
get "/login" => "devise/sessions#new"
get "/signup" => "devise/registrations#new"
end
Run Code Online (Sandbox Code Playgroud)
两条路线的变化没有用,所以我停了下来.
我如何更改它,以便我的路线是:
/ users/sign_in =/login
/ users/sign_up =/signup
/ users/sign_out =/signout
/ users/edit =/edit
我正在使用Devise 1.3.4和Rails 3.0.7.
先感谢您!
好吧,我想通了,生病只是打字来帮助其他新手!
除非以这种方式编码,否则路线本身会改变但不会改变导航链接 尝试http:// localhost:3000/login和http:// localhost:3000/users/sign_up,它们是相同的东西,但只需手动输入.
我的新代码看起来像这样(导航链接和路由配置在一起):
routes.rb中:
MyApp::Application.routes.draw do
devise_for :users do
root :to => "devise/registrations#new"
get "/" => "devise/registrations#new"
post '/' => 'registrations#new', :as => :new_user_registration
match '/', :to => 'devise/registrations#new'
get "/edit" => "devise/registrations#edit"
match '/edit', :to => 'devise/registrations#edit'
get "/login" => "devise/sessions#new"
match '/login', :to => 'devise/sessions#new'
get "/logout" => "devise/sessions#destroy"
match '/logout', :to => 'devise/sessions#destroy'
end
namespace :user do
root :to => "profile#index"
end
Run Code Online (Sandbox Code Playgroud)
views/devise/menu/_login_items.html.erb:
<% if user_signed_in? %>
<li>
<%= link_to('Logout', logout_path) %>
</li>
<% else %>
<li>
<%= link_to('Login', login_path) %>
</li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
views/devise/menu/_registration_items.html.erb
<% if user_signed_in? %>
<li>
<%= link_to('Edit account', edit_path) %>
</li>
<% else %>
<li>
<%= link_to('Sign up', root_path) %>
</li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我当然希望这可以帮助那些像我一样迷失的人,并进入设计和RoR.它将让您很好地理解如何让路线以简单的方式呈现您想要的方式,但仍然有效.祝好运!