0

アクションメーラーを使用して、Railsアプリにパスワードリセット機能を追加しようとしています。パスワードをリセットするために生成されたリンクが正しくないことを除いて、すべてが正常に機能しているようです。

ファイルは次のとおりです。

File user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: "from@example.com"
  def password_reset(user)
    @user = user #make the user available in mailer template
    mail :to => user.email, :subject => "Password Reset"
  end
end

File password_reset.text.erb次のリンクが含まれています。

<%= edit_password_resets_url(@user.password_reset_token) %>

メールとトークンの値を取得すると、user変数が正しく渡されていることがわかります。ただし、メーラーで生成されるURLは次のようになります。

http://localhost:3000/password_reset/edit.jo_jYhkjsdjskjdskYHJSDA

ただし、期待値は次のようになります

http://localhost:3000/password_resets/jo_jYhkjsdjskjdskYHJSDA/edit

以下を持っているroutes.rb

resource :password_resets

また、レーキルートは次のことを示しています。

edit_password_resets GET /password_resets(.:format) password_resets#edit

何がうまくいかない可能性がありますか?

注:私はライアンベイツのレールキャスト#274をフォローしています

4

1 に答える 1

1

これは、の代わりにconfig/routes.rb含むようです。単一のリソースとして、これはへのルートを追加します。に値を渡すと、にマップされ、説明する症状と一致します。resource :password_resetsresources :password_resetsedit_password_resets/password_resets/edit(.:format)edit_password_resets_urledit.<value>

これをに変更resources :password_resetsすると、問題が修正されます。edit_password_resetまた、コレクションに適用される複数形ではなく、メンバーに適用されるため、ルートの名前を--singularに変更します。

于 2012-10-11T21:00:24.910 に答える