authlogicのユーザをナビゲートするapplication.html.erb
にnavメニューを追加します。 ::logout、:register、:loginなどのすべてのルータは、カスタムパスで動作しているようです。ここで素敵なURLでカスタム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
に私を転送しています。このパスのnice URLを作成するにはどうすればよいですか。私はそれを/account/edit
にしたいと思います。また、このパス/users/:id/edit
を無効にして、ユーザーが他のユーザーIDを要求しないようにする必要があります。それは404ページが完璧ですスローする必要があります。ナビゲーション・メニューの
現在のパス:
ログアウト:/account/logout
ログイン:/account/login
登録:
:私はedit_user_pathのための別のパスを持っているのが大好きだ
/register
プロフィールの編集:/account/edit
edit_user_path(current_user.id)を使用する方法はありますか?パスは自動的に/ account/edit/disableに転送されます。
ご協力いただければ幸いです。ありがとう!
[更新]これは
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モデルは非常に単純で、私の/config/router.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'の代わりにカスタムルートを使用する場合、no、ユーザーは/ users /:id/editにアクセスすることはできません。そして、あなたはそれを両方の方法で持つことはできません - あなたはURLにIDを持っているか、そうではありません。しかし、後者の場合はセッションやクッキーで輸送する必要があります。結局のところ、httpはステートレスなプロトコルです。 – Rhywden
hmm、 'current_user.id'は' resources:users'なしでもう動作しないようです。 – lnguyen55