0

Railsアプリでdeviseを使用しています。何らかの理由で、メールアドレスを入力した後、[パスワード リセットの手順を送信] ボタンをクリックすると、この URL の空白のページが表示されます/users/password.user。なぜこれを行うのか、どのように変更するのかについてはわかりません。

投稿するコードが正確にわからないので、追加してほしい抜粋をコメントしてください。ありがとう。

記録として、パスワード リセット メールとパスワード変更トークンは完全に機能しますが、この奇妙なリダイレクト (またはリダイレクトの欠如) だけです。

ルートは次のとおりです。

devise_for :users, :controllers => {:registrations => 'registrations', :invitations => 'invitations', :confirmations => 'confirmations'}, :except => [:show]

パスワードパスヘルパーはedit_password_url(@resource, :reset_password_token => @resource.reset_password_token)

config.reset_password_keys:

config.reset_password_keys = [ :login ]

パスワードリセットフォーム:

            <head>
              <%= stylesheet_link_tag "passreset" %>  
            </head>

            <body>

                <div id="box">
                        <%= form_for(resource, :as => resource_name, :url => user_password_path(resource_name), :html => { :method => :post }) do |f| %>
                            <%= devise_error_messages! %>

                                <%= f.text_field :id,:name => "user[login]", :placeholder => "Username or Email"%>

                                <input name="commit" type="submit" name="" value="Submit" />
                        <% end %>
                </div>
            </body>
4

3 に答える 3

0

フォームの URL を次のように変更してみてください

:url => password_path(resource_name)
于 2012-08-06T15:33:39.160 に答える
0

私があなたを正しく理解していれば、ビューまたはデバイスの初期化ファイルを編集する必要があるようです => config/initializers/devise.rb

devise ジェネレーター rails generate devise:views users を実行することで、ビューを編集できます。

それが役立つことを願っています

于 2012-08-05T00:41:40.257 に答える
0

同様の問題がありました。私たちにとって、自分のアカウントを編集したときに、Devise が私たちをログアウトさせていたことが判明しました。sign_in() デバイス ヘルパーを使用し、最終的に次のコードを使用しました。

ユーザーコントローラー

デフォルト更新

# need to know if user is changing their own password for re-sign in purposes.
is_current_user =  (@user == current_user)

password_change = !params[:user][:password].empty?
if (password_change)
  @user.update_with_password(params[:user])
else
  @user.update_without_password(params[:user])
end

if is_current_user # Devise signs us out, so...
  sign_in(@user, :bypass => true)
end


@user.has_temp_password = false
@user.save!

if is_current_user
  redirect_to root_path, notice: 'Your account was successfully updated.'
else
  redirect_to users_path, notice: 'The user was successfully updated.'
end

終わり

于 2012-08-05T01:13:13.047 に答える