2017-01-29 10 views
0

users#editアクションを常に/settingsと表示するようにします。私のルートでユーザーを#設定にリダイレクトしますか?

私は設定に

get "settings" => "users#edit", as: :settings 

任意のリンクを持っているが、この

<%= link_to "Settings", settings_path %> 

のようなものです。しかし、私はexample.com/username/editを訪問するとき、それはリダイレクトされません。

どうすればsettingsにリダイレクトできますか?そしてこれは悪い習慣ですか?

答えて

1

新しいルートsettingsを定義することによって、あなたはすべてのルートへのレールを言っているがusers_controlleredit方法に/settingsに来るリクエストをGET。これは、そのコントローラを使用するすべての要求が別のルートにリダイレクトされることを意味するものではありません。ここでは、同じコントローラメソッドを使用する2つの別個のルートを定義しました。

を使用したくない場合は、ルートを削除することをおすすめします。あなたが現在

# config/routes.rb 
resources :users 

のようなものを持っている場合だけ

# config/routes.rb 
resources :users, except: [:edit] 

に変更し、あなたのsettings_pathヘルパーを使用してください。

2

は私がに、あなたはこの代わりに

のget「/ユーザ名/編集」を行うためのものだと思う:(「/設定」)

あなたは上記のやったことのURLを使用していしようとしているものをリダイレクトこの方法は、あなたのリンクにsettings_pathとして使用されるようにsettingsの別名を持つusers_controllereditと呼ばどこか

質問のこれらの種類のためにRailsのAPIを見るために、常に便利です

参考:http://guides.rubyonrails.org/routing.html#redirection

+0

良い答えですが、使用されていない場合は、未使用のルートを完全に削除する方が良いとは思いませんか? – Coolness

+0

でもそれは真実ですが、私はその質問の正確な状況を知らないので、その仮定をしませんでした。しかし、あなたがルートを使用するつもりならば、それを取り除くのが最良のコースですアクション – lifejuggler

関連する問題