2017-02-12 8 views
0

Railsのlink_toはどのように機能しますか? <a href="http://devdocs.io/rails~4.2/actionview/helpers/urlhelper#method-i-link_to" rel="nofollow noreferrer">docs</a>から

link_to "Profile", profile_path(@profile) 
# => <a href="/profiles/1">Profile</a> 
link_to "Profile", @profile 
# => <a href="/profiles/1">Profile</a> 

はここで起こっがたくさんあります。まず、Profileリソースに対して生成されるメソッド#profile_pathがあります。これらのタイプのメソッドは常に生成されます。

  • どのように機能しますか?
  • 生成されるメソッドのドキュメントはどこにありますか?

次に、第2の例では、profile_pathの方法が省略されています。

  • レールにはProfileリソースに関連付けられたビューが含まれていますか?
  • どうやって知っていますか?ドキュメントからも

link_toためのメソッドシグネチャ:

link_to(body, url_options = {}, html_options = {}) 

はまた、ここで起こっがたくさんあります。ルビーlink_toの観点からは、3つのpositional arguentsがあり、そのうちの2つはoptionalです。しかし、最後の2つはハッシュですので、明示的にcurliesを使用しない限り、2つを区別するのはちょっと難しいです。したがって、url_optionshtml_optionsのどちらを設定しようとしているかについては注意が必要です。

  • url_optionshtml_optionsの違いは何ですか?
  • いつ、なぜそれぞれを使用しますか?
  • 簡単な例がありますか?

答えて

2

rake routesをアプリのルートディレクトリに移動すると、すべてのルートが表示されます。例:

     Prefix Verb  URI Pattern                Controller#Action 
       negotiations GET  /negotiations(.:format)             negotiations#index 
          POST  /negotiations(.:format)             negotiations#create 
      new_negotiation GET  /negotiations/new(.:format)            negotiations#new 
      edit_negotiation GET  /negotiations/:id/edit(.:format)          negotiations#edit 
       negotiation GET  /negotiations/:id(.:format)            negotiations#show 
          PATCH  /negotiations/:id(.:format)            negotiations#update 
          PUT  /negotiations/:id(.:format)            negotiations#update 
          DELETE /negotiations/:id(.:format)            negotiations#destroy 

このようにあなたが最後に_pathまたは_urlでこれらのプレフィックスのいずれかを使用することができます。あなたの質問に直接関係しないので、今私は_urlの詳細には入りません。

Railsは、モデルによってlink_toに渡すオブジェクトをマップすることができます。実際には、それを使用するビューとは関係ありません。URLを生成するときにProfileクラスのインスタンスを/profiles/:idパスにマップする必要があることがわかります。このための前提条件は、resourcesタグを使用してroutes.rbProfileルートを宣言していることです。 resources :profiles

url_optionsは、URLまたは任意のオプションを渡すためのものです。 HTMLがレンダリングされる前に、Railsが最初に実行しなければならないことがしばしば魔法です。

html_optionsは、リンクタグ自体に設定を渡すためのものです。実際のパス自体はurl_optionsになりますが、id,classなどになります。すべてhtml_optionsに入っています。ここに例があります:

link_to "Profile", @profile, class: 'button' 

文書はこれに関する素晴らしい参考資料です。それらをチェックしてください:http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to

関連する問題

 関連する問題