Railsコンソールからのルートヘルパーへのアクセス



Railsでは、ルートは入って来るURLをコントローラアクションに写像します.アプリケーションのルートを定義するときは、ルートの名前から相対URLまたは絶対URLをビルドするパスとURLヘルパーも取得します.たとえば、あなたが持っているusers あなたのリソースconfig/routes.rb :
resources :posts
このルートはメソッドを作成するposts_path あなたがビューで使用することができます.簡単なルートでは、おそらくヘルパーの出力を推測することができますposts_path ヘルパーはURLを返す/posts . 複雑なルート、特に入れ子になったものについては、ヘルパーを使用してビューをレンダリングするまで、URLを把握することは困難です.
Railsコンソールから直接URLとパスヘルパーの出力をチェックする簡単な方法を示します.また、モデルでこれらのヘルパーにアクセスする方法も参照してください.
一つのルートを持つ典型的なルートファイルです.
# routes.rb

Rails.application.routes.draw do

  get '/posts/:id/preview', to: 'posts#preview', as: "preview_post"

end
このルートはURLをマップするposts/:id/preview to PostsController#preview アクション.そのうえ、我々はルートと名付けましたpreview_post 使用as オプション.したがって、レールが自動的に生成されますpreview_post_path and preview_post_url 我々のためのヘルパー.
アプリケーションのルートを見るにはrails routes コマンド.
> bin/rails routes -g preview

Prefix Verb URI     Pattern                  Controller#Action
preview_post GET  /posts/:id/preview(.:format) posts#preview
しかし、これはルートがあなたのために生成するURLを教えてくれません.そのためには、app アプリケーションを表します.Railsはすべてのヘルパーをapp それが起動するとき、オブジェクト.したがって、開発中にかなり便利なコンソール内の任意の名前のルートヘルパーの出力をチェックすることができます.
irb(main):018:0> post = Post.first

irb(main):019:0> app.preview_post_path(post)
=> "/posts/5/preview"

モデルからアクセスするヘルパー


既定では、ヘルパーメソッドは、コントローラ、ビュー、およびメールからアクセスできます.他の場所(例えばモデル)から自動生成されたヘルパーメソッドにアクセスする必要がある場合は、Rails.application.routes.url_helpers あなたのクラスで
class Post < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  def link
    post_path(self)
  end
end

Post.find(1).link # => "/posts/1"
私は助けることを望む.