1

Railsのroutes.rbファイルに次のルートがある場合:

get "time_track/check_in"

ビューで使用できるパス変数は何ですか?time_track_check_in_pathまたはのようなものを想定しましcheck_in_time_track_pathた。ただし、どちらも機能しません。

<%= link_to 'Check-in', check_in_time_track_path %>
<%= link_to 'Check-in', time_track_check_in_path %>
4

1 に答える 1

0

動詞ルートを提供する場合、RouteSetはコントローラー/アクションおよびヘルパー メソッド名に関して最適な推測を行います。一致するパスに少なくとも 2 つのセグメントが必要です。それ以外の場合は、コントローラー、アクション、およびヘルパーの名前を自分で指定する必要があります。

単一のセグメント マッチャー (パスにスラッシュがない) の場合、完全な定義が必要です。

# Looks for FooController#index and provides foo_path/foo_url
get 'foo', :to => 'foo#index', :as => :foo

2 つ以上のセグメントを持つマッチャーの場合、次の構文が想定されます。

# Looks for FooController#bar and provides foo_bar_path/foo_bar_url
get 'foo/bar'
# Looks for Baz::FooController#bar and provides baz_foo_bar_path/baz_foo_bar_url
get 'baz/foo/bar'

注意すべきことの 1 つは、パス ヘルパー名に関して、この動作がリソース マッチャーと異なることです。この構文を使用すると namespace_controller_action が提供され、リソースと名前空間を使用すると action_namespace_controller が提供されます。これは、2 つの形式の間の混乱の一部である可能性があります。

たとえば、すでにタイム トラック リソースがある場合は、次のように追加します。

# Provides /time_track/check_in as check_in_time_track_path mapping to TimeTrackController#check_in
resources :time_track do
  collection do
    get :check_in
  end
end
于 2013-03-19T21:26:45.403 に答える