私はこのようなものが欲しい:
if has_route?(:controller => 'posts', :action => 'index')
...
ビューでこれを行うにはどうすればよいですか?
- - 解決 - -
def has_route? options
Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
私はこのようなものが欲しい:
if has_route?(:controller => 'posts', :action => 'index')
...
ビューでこれを行うにはどうすればよいですか?
- - 解決 - -
def has_route? options
Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
これはあなたが望むものの逆であることは知っていますが、次のようなことができます:
Rails.application.routes.recognize_path('/posts')
次のようなハッシュが返されます。
{:controller=>"posts", :action=>"index"}
しかし、ハッシュを与えてパスを返すための API については知りません。
ActionDispatch::Routing::RouteSet APIを調べることができます。
また、Rails.application.routes.routes
Journey::Routes オブジェクトの配列を返すことに注意してください。したがって、必要なmap
コントローラー/アクションのペアリングにこの配列を使用できます。しかし、この API は既に存在しているはずです。そうでない場合は、おそらくそうすべきです。:)
通常、ルートはこの方法でテストされます
it "routes to #index" do
get("/projects").should route_to("projects#index")
end
リソースのスキャフォールドは、ルートをテストするためのスペックファイルを生成します。たとえば、ここを参照してください。
次のようなものを試すことができますrespond_to?("[name of rails routing method]")