6

私は RoR を初めて使用するので、これは初心者の質問です:
コントローラーがusers_controller.rbあり、メソッドを追加する場合foo、このルートを作成するべきではありませんか?

http://www.localhost:3000/users/foo

私がそれをしたとき、私はこのエラーを得たからです:

ID=foo のユーザーが見つかりませんでした

もちろんビューを追加しましたfoo.html.erb

編集:このコード
に追加しましたが、同じエラーが発生します:routes.rb

resources :users do
    get "signup"
  end
4

4 に答える 4

19

これは Rails 3 では自動的には機能しません。追加する必要があります。

resource :users do
    get "foo"
end

あなたのroutes.rbに

http://guides.rubyonrails.org/routing.htmlをぜひご覧ください。ルーティングについてよく説明されています。

于 2012-10-30T18:47:53.373 に答える
6

Rails はユーザーを show コントローラーに誘導しており、ユーザーが foo を :id パラメータとして show アクションに提供していると考えています。

users#show で /users/:id として一致する前にディスパッチされるルートを設定する必要があります

これを達成するconfig/routes.rbには、以下を追加して既存のリソース記述を置き換えます。:users

resource :users do
    get "foo"
end
于 2012-10-30T18:49:04.797 に答える
3

他の回答に追加するだけで、以前のバージョンのRailsにはデフォルトルートがありました

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

これにより、フォームコントローラー/アクションのリクエストが特定のコントローラーで特定のメソッドを呼び出す場所について説明した動作が得られました。この行はまだ入力されroutes.rbていますが、デフォルトではコメントアウトされています。コメントを解除してこの動作を有効にすることができますが、上記のコメントは、これが推奨されない理由を説明しています。

# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
于 2012-10-30T19:07:45.767 に答える