0

ユーザーにログインするためのフォームを'users'備えたビューを備えたコントローラーを作成したので、私を助けてください。'login'routes.rbget user/loginpost user/login

今私が行くときが表示されlocalhost:3000/users/loginます:

Routing Error

No route matches [GET] "/users/login"
Try running rake routes for more information on available routes.

そのページを機能させるために何をすべきかを教えてください。その問題は、ルーターで「get」を「post」に変更したためです。追加する必要があるものが他にありますか?

4

2 に答える 2

1

両方をroutes.rbで使用できます。

get user/login
post user/login

これは、コントローラーが両方の方法を使用して行われた要求を認識することを意味します。それを整理するのはコントローラーロジック次第です。getは通常、ログインフォームをレンダリングするために使用されます。postは、ユーザーのユーザー名とパスワードを受け取り、ユーザーを認証してから、ログインが成功する(または必要に応じて失敗する)ページにリダイレクトします。

私はこれを言うことでいくつかの論争を巻き起こすかもしれませんが、あなたが初心者で、ユーザー認証を使用して「深刻な」Webサイトを作成しようとしている場合は、偶然に何も任せず、代わりにdeviseのような宝石を使用することをお勧めします(https: //github.com/plataformatec/devise)あなたのためにそれを行います。最初にゼロからそれを行う方法を学ぶ方が良いと言う人もいますが、それにはある程度の意味もあります。

于 2012-12-25T23:58:24.093 に答える
1

ブラウザでそのURLにアクセスすると、リクエストのタイプはGET-ですが、あなたが言ったように、現在このリクエストのルートはありません。

POSTrouteは、このページで実際にフォームを送信するときに役立ちます-単純な送信(method属性をとして指定POST)またはAJAXリクエストを使用します。

于 2012-12-25T22:10:14.843 に答える