我在application.html.erb
中添加了导航菜单,该菜单在authlogic中导航用户。所有的路由器,如::logout,:register和:login似乎都可以使用自定义路径。
match 'account/login' => 'user_sessions#new', :as => :login
match 'account/logout' => 'user_sessions#destroy', :as => :logout
match 'register' => 'users#new', :as => :register
这是导航菜单:
<% if current_user %>
<%= link_to "Edit Profile", edit_user_path(current_user.id)%> <%=h current_user.firstname %>
<%= link_to "Logout", :logout %>
<% else %>
<%= link_to "Register", :register %> |
<%= link_to "Login", :login %>
<% end %>
但是edit_user_path正在把我转到/users/:id/edit
。我如何为这个路径制作漂亮的URL。我想让它是/account/edit
。它还需要禁用此路径/users/:id/edit
,以防止用户请求不属于他/她的另一个用户ID。它应该抛出一个404页面是完美的。
导航菜单中的当前路径:
登出:/account/logout
登录:/account/login
寄存器:/register
我希望edit_user_path有另一个路径:
编辑配置文件:/account/edit
是否有任何方法我可以简单地使用edit_user_path(current_user.id)和路径自动将我转移到/account/edit和禁用id请求。
任何帮助将非常感激!谢谢!
[Updated]这是我的/config/router.rb
Appcatous::Application.routes.draw do
resources :users, :user_sessions
match "account" => "users#show", :as => :account
match 'account/login' => 'user_sessions#new', :as => :login
match 'account/logout' => 'user_sessions#destroy', :as => :logout
end
用户。Rb模型非常简单:
class User < ActiveRecord::Base
acts_as_authentic
validates :firstname, :presence => true
validates :lastname, :presence => true
end
如果您包含所有有问题的路由,这将是有帮助的-这意味着也为用户的路由。你是否创建了:
resources :users
如果您这样做了,您将不得不禁用该命令并手动重新创建您需要的路由(示例!):
match 'account/edit' => 'users#edit', :as => :edit_user
或者你的控制器的名字。这样你就会得到你的"/account/edit"——然而,你也没有办法通过这种方式转移用户id。您必须通过其他方式传输该数据,例如通过存储在cookie或会话中的变量。后一种方法是记住用户身份验证的常用方法。