如何使用漂亮的URL自定义edit_user_path



我在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或会话中的变量。后一种方法是记住用户身份验证的常用方法。

相关内容

最新更新