URLヘルパーがRailsでどのような引数を取るのかを知るにはどうすればよいですか?たとえば、url helperが以下のパラメータを1つだけ受け取ることを知るにはどうすればよいですか?私はこれらのメソッドがメタプログラムされていることを知っていますが、ドキュメントはどこにありますか?URLヘルパーのドキュメントはどこにありますか?
link_to "New Ticket", new_project_ticket_path(@project)
URLヘルパーがRailsでどのような引数を取るのかを知るにはどうすればよいですか?たとえば、url helperが以下のパラメータを1つだけ受け取ることを知るにはどうすればよいですか?私はこれらのメソッドがメタプログラムされていることを知っていますが、ドキュメントはどこにありますか?URLヘルパーのドキュメントはどこにありますか?
link_to "New Ticket", new_project_ticket_path(@project)
ルートヘルパーが必要とするパラメータの数は、ルート定義を調べることで判断できます。最初の列はあなたに名前を与えます
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
:あなたはこのように表示されるコマンドラインでrake routes
を実行した場合は
resources :users
:
たとえば、あなたがこのルートのファイルを持っているかもしれませんルートの_path
または_url
を追加すると、ルートヘルパーの名前を取得できます。
第3列はパターンを示します。これは、引数が何であるか把握できる場所です。引数はコロンで始まる部分で、省略可能な引数はかっこで囲みます。
edit_user_path(1) # => "https://stackoverflow.com/users/1/edit"
edit_user_path(2, :html) # => "https://stackoverflow.com/users/2/edit.html"
:たとえばedit_user
ルートが1引数(id
)と1つのオプションの引数(format
)を必要と含まれているパターン/users/:id/edit(.:format)
を持って、どの私はedit_user_path
またはedit_user_url
ヘルパーに対して少なくとも1つの引数を渡す必要が私に語りました
edit_user_path(id: 3, format: 'js') # => "https://stackoverflow.com/users/3/edit.js"
、クエリ文字列の一部となる余分な引数を追加することができます:あなたはまた、ハッシュにキーとしてパターンから引数名を使用することができます
edit_user_path(id: 4, format: 'json', foo: 1) # => "https://stackoverflow.com/users/4/edit.json?foo=1"
edit_user_path(5, bar: 2) # => "https://stackoverflow.com/users/5/edit?bar=2"
rake routes
の詳細については、Rails Routing Guide's section on Listing Existing Routesを参照してください。
私は通常、ここでAPI docがあるRails Routing Guide
を参照してください。これは、link_to、button_to、link_to_unless、link_to_unless_current、current_page?、およびmail_toを含んでいます。
link_to(name = nil, options = nil, html_options = nil, &block)
link_to(body, url, html_options = {})
# url is a String; you can use URL helpers like posts_path
オプション
:データ - このオプションは、カスタムデータ属性を追加するために使用することができます。
メソッド:HTTP動詞のシンボル - この修飾子は、動的にHTMLフォームを作成し、指定されたHTTP動詞を使用して処理するためにフォームをすぐに送信します。レコードを削除する(サイトをスパイダーしている間に検索ボットが続けることができる)ような危険なアクションでは、リンクを持ってPOST操作を実行すると便利です。サポートされる動詞は:post、:delete、:patch、:putです。ユーザーがJavaScriptを無効にしている場合、リクエストはGETを使用することに戻ります。 href: '#'が使用され、ユーザーがJavaScriptを無効にした場合、リンクをクリックしても効果はありません。 POSTの振る舞いに頼っているのであれば、あなたのコントローラーのアクションでPOSTオブジェクトのメソッドを使ってチェックする必要があります。?、delete?、:patch、put?
remote:これにより、邪魔にならないJavaScriptドライバは、リンクをたどる代わりに問題のURLにAjaxリクエストを行うことができます。彼らは完全だ後、ドライバーそれぞれがAjaxリクエストが完了するのを聞いて、JavaScriptの操作を実行するためのメカニズムを提供
データは
確認属性:「?質問」を - これにより、控えめなJavaScriptドライバは、指定された質問を促すことができます。ユーザーが承諾すると、リンクは正常に処理され、そうでない場合は何も処理は行われません。
:disable_with - このパラメータの値は、フォームの送信時に無効なバージョンの送信ボタンの値として使用されます。この機能は、控えめなJavaScriptドライバによって提供されます。
これはすばらしい答えです!ありがとうございました! – lampShade
私は 'rake routes'で示されているように' admin_account_reset_password'という名前のルートを持っていますが、 'ActionMailer'内から' admin_account_reset_password_url() 'を呼び出すと、"未定義のメソッド 'Admin_account_reset_password_url' for Admin :: AccountMailer:Class " - thoughts ? –
これは素晴らしい答えですが、私は上記のリンクを読んで、私はドキュメントの 'あなたがクエリ文字列の一部になる余分な引数を追加することができます'を見つけることができませんが、あなたはどこに生成されたパスメソッド? – GMsoF