9

Rails 3 の match キーワードは機能していますが、Rails 4 の match キーワードはルートに対して機能していません

Rails 4でこれらのルートを定義するにはどうすればよいですか

このコード セグメントは Rails 3 で動作しています

match 'admin', :to => 'access#menu'

match 'show/:id', :to => 'public#show'

match ':controller(/:action(/:id(.:format)))'

Rails 3のようにRails 4の一般的な式が必要です

 match ':controller(/:action(/:id(.:format)))'
4

4 に答える 4

13

Rails 4 では generic が削除されmatchたため、応答する動詞を指定する必要があります。通常、ルートを次のように定義します。

get ':controller(/:action(/:id(.:format)))' => 'foo#matcher'

複数の動詞を取得するために match を使用する場合は、次のようにします。

match ':controller(/:action(/:id(.:format)))' => 'foo#matcher', via: [:get, :post]
于 2013-11-01T08:04:16.177 に答える
2

これを行う最善の方法は、最初に rake routes の出力を見つけることです

$ rake routes

次のようなものが得られます。

[rails path] [verb] [url format] [controller#action]

たとえば、次のようになります。

user_show  GET  /show/:id  public#show     

アクションはあなたが見る必要があるものです。get次のように、またはpostではなくmatch-を使用する必要があります。

get 'show/:id', :to => 'public#show'
于 2013-11-01T08:03:59.953 に答える
0
post ':controller(/:action(/:id(.:format)))'
于 2014-10-17T18:25:23.893 に答える