3

私はこのようなものが欲しい:

if has_route?(:controller => 'posts', :action => 'index')
  ...

ビューでこれを行うにはどうすればよいですか?

- - 解決 - -

def has_route? options
  Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
4

3 に答える 3

1

これはあなたが望むものの逆であることは知っていますが、次のようなことができます:

Rails.application.routes.recognize_path('/posts')

次のようなハッシュが返されます。

{:controller=>"posts", :action=>"index"}

しかし、ハッシュを与えてパスを返すための API については知りません。

ActionDispatch::Routing::RouteSet APIを調べることができます。

また、Rails.application.routes.routesJourney::Routes オブジェクトの配列を返すことに注意してください。したがって、必要なmapコントローラー/アクションのペアリングにこの配列を使用できます。しかし、この API は既に存在しているはずです。そうでない場合は、おそらくそうすべきです。:)

于 2012-11-30T18:18:52.783 に答える
0

通常、ルートはこの方法でテストされます

it "routes to #index" do
  get("/projects").should route_to("projects#index")
end

リソースのスキャフォールドは、ルートをテストするためのスペックファイルを生成します。たとえば、ここを参照してください。

于 2012-11-30T18:03:26.077 に答える
0

次のようなものを試すことができますrespond_to?("[name of rails routing method]")

于 2012-11-30T17:51:15.993 に答える