0

ActivationController で更新アクションを呼び出して、サインアップしたユーザーをアクティブ化したいと考えています。

私のactivation.html.erbファイルにはこれがあります:

<html>
  <body>
    To activate your account, please click the link below:

    <%= link_to "Click Here", activation_url(@user.activation_token), method: :put %>
  </body>
</html>

rake routes次のようになります。

 activation PUT    /activations/:id(.:format)          activations#update

しかし、メール内のこのリンクをクリックすると、次のエラーが表示されます。

No route matches [GET] "/activations/icrvr5uNahnA5fpVjVTDEw"

ヘルプ、

マイク

アップデート

以下の回答に従って、ルートを次のように変更しました。

activations_validate GET  /activations/validate(.:format)  activations#validate

しかし、ルートに :id がない場合、URL から params[:id] を取得するにはどうすればよいでしょうか?

4

1 に答える 1

0

ルートファイルで、PUT ではなく GET にしてみて、メソッドを次のようにactivations#validate変更します (明らかにコントローラーも変更します)。次に、コントローラーの検証メソッドでparams[:id]検証ロジックをチェックし、成功した場合は、ユーザーを更新 (アクティブ化) し、どこにでも再ルーティングします。

于 2012-10-10T05:09:55.047 に答える