我在application.html.erb
中添加了一個導航菜單,可以在authlogic中導航用戶。所有路由器如::logout,:register和:login似乎都適用於自定義路徑。如何自定義具有漂亮網址的edit_user_path
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
。如何爲此路徑創建漂亮的網址。我想使它成爲/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
嗨,我已經做到了,但我不喜歡那樣。我也會阻止用戶請求ID。使用自定義路由器似乎是簡單的解決方案,但用戶仍然可以訪問/ users /:id/edit。我的問題是,如果我們仍然可以在模板代碼中使用** edit_user_path(current_user.id)**,但路徑已更改。 – lnguyen55
如果您使用自定義路線而不是'resources:users',那麼不,用戶將無法訪問/ users /:id/edit。而且你不能兩種方式 - 無論你有在URL中的ID或你沒有。但在後一種情況下,您必須通過會話或cookie來傳輸它。畢竟,http是一個無狀態的協議。 – Rhywden
嗯,似乎'current_user.id'不會工作了沒有資源:用戶' – lnguyen55