61774
`rails g scaffold memo`  
すると  
`edit_memo_path`  
っていうメソッドが書かれたビューが生成されるんですが  
このメソッドの定義ってどこにあるんでしょうか

Rails も ruby も勉強始めたばかりで  
rubyのネイティブメソッドなのか Rails 特有のメソッドなのか  
ユーザ定義なのかが良く分かってない感じです

memo っていうのは自分で入力したモデル名なので  
ユーザ定義のメソッドだと思っているのですが  
どこかに定義が書かれてるわけではないんでしょうか
CC BY-SA 4.0
2019-12-25T16:10:05.863
61770
2019-12-25T22:20:09.680
question
ruby-on-rails
edit_xxxx_path ってユーザ定義？　Railsのメソッド？
Railsがルーティングに基づいて自動的に生成するヘルパーメソッドです。

参考: <https://railsguides.jp/routing.html>

Rubyは非常に柔軟な言語であるため、動的にメソッドの作成や削除を行うことができます。`rails g scaffold
memo`を実行するとconfig/routes.rbにmemoに関するルーティング設定が追加されます。きっとそれは、`resources
memo`というものです。これはCRUDなアクセスをいくつか追加します。全てのルーティングパスは`rails
routes`コマンドを実行することで確認できます。

ルーティングはあるパスにアクセスしたときに適切なコントローラーを呼び出すための定義ですが、それだけではなく、そのパス自身を取得するための_pathヘルパーメソッドおよび_urlヘルパーメソッドを提供するものがあります(_pathはパスだけ、_urlはフルのURL)。例えば、`resources
memo`とすると`/memos/:id/edit`(`:id`部分には編集するメモの`id`が入ります)と言うパスが`memos#edit`というコントローラー#アクションになるというルーティングが追加されますが、同時に`edit_memo_path`というヘルパーメソッドも生成し、ビューにて`/memos/:id/edit`というパスを取得しやすくします。単にヘルパー内で`/memos/:id/edit`と書くこともできますが、もし間違って`/memo/:id/edit`と書いても、実際にそのビューでリンクをクリックしないと気付きません。しかし、メソッドであれば、メソッド名を間違えれば、ビューを表示する時点でエラーになりますし、メソッドさえ呼び出せれば間違ったパスを返す事も無いという利点があります。

その他、細かい点は、参考に挙げたRailsガイドを参考にしてます。
CC BY-SA 4.0
2019-12-25T22:20:09.680
61774
2019-12-25T22:20:09.680
7347
61770
answer