我在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请求。
任何帮助将不胜感激!谢谢!
[已更新] 这是我的/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
users.rb模型非常简单:
class User < ActiveRecord::Base
acts_as_authentic
validates :firstname, :presence => true
validates :lastname, :presence => true
end
答案 0 :(得分:0)
如果您包含所有相关路线(这也意味着用户的路线)会很有帮助。你创建了那些:
resources :users
如果您这样做了,您将必须禁用该命令并仅使用手动重新创建所需的路线(例如!):
match 'account/edit' => 'users#edit', :as => :edit_user
或控制器的任何名称。这样你就可以获得“/ account / edit” - 但是,你也无法以这种方式转移用户ID。那个你必须通过其他方式转移,例如通过存储在cookie或会话中的变量。 无论如何,后一种方法是记住用户身份验证的常用方法。