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"
私は助けることを望む.Reference
この問題について(Railsコンソールからのルートヘルパーへのアクセス), 我々は、より多くの情報をここで見つけました https://dev.to/software_writer/accessing-route-helpers-from-rails-console-41b0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol