1

Rails (3.2.12) アプリケーションでデバイス (2.2.3) を使用しています。

私は2つのデバイスモデル、デバイス管理者とユーザーを持っています.電子メールを使用するデバイスモデル管理者認証_キーとユーザー名を使用するユーザー認証_キー(ただし、まだ電子メールを持っています)、管理モデルは完全に機能していますが、パスワードを忘れた機能のユーザーモデルは動作を停止することを決定しました. メール アドレスを入力して [リセット手順を送信] をクリックすると、次のようなエラー メッセージが表示されます。

NoMethodError in PasswordusersController#create

undefined method `slice' for nil:NilClass

passwordadmins_controller.rbとの間に大きな違いはありませんpasswordusers_controller.rb。唯一の違いは名前です

これを修正するにはどうすればよいですか?

これpasswordusers_controller.rb

class PasswordusersController < Devise::PasswordsController

  prepend_before_filter :require_no_authentication
  append_before_filter :assert_reset_token_passed, :only => :edit

  def new
    super
  end

  def create
    self.resource = resource_class.send_reset_password_instructions(resource_params)

    if successfully_sent?(resource)
      redirect_to new_session_user_path, :notice => "Instruction Send To Your Email"
    else
      respond_with(resource)
    end
  end

  def edit
    super
  end

  def update
    self.resource = resource_class.reset_password_by_token(resource_params)

    if resource.errors.empty?
      resource.unlock_access! if unlockable?(resource)
      flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
      set_flash_message(:notice, flash_message) if is_navigational_format?
      sign_in(resource_name, resource)
      redirect_to home_subdomain_path, :notice => "Password changed"
    else
      respond_with resource
    end
  end

  protected

    def after_sending_reset_password_instructions_path_for(resource_name)
      new_session_user_path
    end

    def assert_reset_token_passed
      if params[:reset_password_token].blank?
        set_flash_message(:error, :no_token)
        redirect_to new_session_user_path
      end
    end

    def unlockable?(resource)
      resource.respond_to?(:unlock_access!) &&
        resource.respond_to?(:unlock_strategy_enabled?) &&
        resource.unlock_strategy_enabled?(:email)
    end

end

アップデート

<%= form_for("User", :url => passwordusers_create_path(resource_name), :html => { :method => :post }) do |f| %>
   <%= render 'layouts/flash_messages' %>
   <div class="row-fluid">
     <div class="input-prepend">
      <span class="add-on"><i class="icon-envelope"></i></span>
      <%= f.email_field :email, 'style' => 'width:240px;', :placeholder => 'Email' %>
      </div>
     <div class="dr"><span></span></div>             
      <%= f.submit "Send", :class => 'btn btn-block btn-primary' %>
     <div class="dr"><span></span></div>                               
</div>
<% end %>  

ご協力ありがとう御座います

4

1 に答える 1

1

小文字を使用したリソースデバイスのデフォルト、これを試してください、

form_for("User" .....

への変更

form_for("user"
于 2013-04-24T15:23:45.053 に答える