2016-07-29 11 views
0

私はレールの新しいユーザーですので、routes.rbの仕組みを理解するのは難しいです!だから私はルートを変更しようとすると、私はこのようなパスを得ました: user/:id/editしかし、私はそのIDがパスに表示されないようにします。レールの経路を変更する

私はこの方法を使用してみてください:

get '/users/:id/edit', to: 'users#edit', as: 'users/edit' 

を、それは何も変わりません。私のroutes.rbで私は得た:

resources :users, only: [:create, :new, :show, :edit] 

誰かがこれを行う方法を知っていますか?すでにガイドを見てみるならば、私はすでにthis guide

+0

任意の特定の理由になりますプレゼント。多数のユーザーがいる場合、アプリはよりRESTfulになり、ユーザーは自分のアカウントのみを編集できるように検証を行うことができます。 routes.rbのコードを記述することもできますか?それが何も変わっていないと言うと、それはどういう意味ですか?特定のエラーが出るか、ルートは変更されませんか? –

+1

@AlexanderSwann独創的な資料は完全に安らかです。 –

+0

ああ大丈夫です!知っておいて、ありがとう! –

答えて

0

あなたは、

resources :users 
01をとっている場合次のように

さて、へのリンクを変更し、あなたがedit linkを持っているあなたのビューファイルでは、とユーザーコントローラのeditアクションへ

<%= link_to 'Edit', users_edit_path(:id => user.id) %> 

今、このリンクを今すぐ

get '/users/edit', to: 'users#edit', as: 'users_edit' 

をこのルートを変更しますid parameter

今、ユーザーのコントローラファイル、それのthats

class UsersController < ApplicationController 

    def edit 

    // params[:id] will be the ID that you sent through the view file. 
    @user = User.find(params[:id]) 

    end 

end 

に、あなたはあなたのカスタムルートで行われ、今ルートを使用すると、ユーザIDを望んでいないusers/edit instead of users/:id/edit

+0

@maluss、それを試しましたか? – Sravan

2

を見て、あなたはおよそsingular resources?

を読んでください時には、あなたは、クライアントが常に がIDを参照せずに検索するリソースを持っています。たとえば、/ profileには、現在ログインしているユーザーのプロフィールを常に と表示します。 この場合、あなたは/プロファイル(というより/プロフィール/:id)をマップする 特異リソース使用することができます showアクションには:

resource :geocoder 

はすべて、あなたのアプリケーション内の六つの異なるルートを作成しますジオコーダコントローラへのマッピング:

GET   /geocoder/new geocoders#new return an HTML form for creating the geocoder 
POST   /geocoder geocoders#create create the new geocoder 
GET   /geocoder geocoders#show display the one and only geocoder resource 
GET   /geocoder/edit geocoders#edit return an HTML form for editing the geocoder 
PATCH/PUT /geocoder geocoders#update update the one and only geocoder resource 
DELETE  /geocoder geocoders#destroy delete the geocoder resource 
+0

ありがとう!が表示されていますが、エラーが発生しました。[GET]と一致するルートがありません "/ users/1/edit "私のプログラムは古いパスを見つけようとするとどうすれば変更できますか? – maluss

+0

@malussは '* _path'ヘルパーを変更します。 –

関連する問題