Rails - 参数数量错误(:force => true?)

时间:2014-06-17 03:21:38

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我有before_filter通常验证每个控制器;但是我不会将它用于某个控制器。但是,当我从该控制器访问特定操作时,出于某种原因,我收到一条错误,说明Rails - wrong number of arguments (:force => true?)用于身份验证。我在方法中添加了一个参数,以查看传递给方法的内容,并将其视为参数{:force=>true}。任何其他控制器操作都不会发生这种情况。

这是我的错误

ArgumentError in RegistrationsController#edit

wrong number of arguments (1 for 0)
Rails.root: *

Application Trace | Framework Trace | Full Trace
app/controllers/application_controller.rb:6:in `authenticate_user!'

这是我尝试访问的路线

edit_user_registration GET    /users/edit(.:format)                                    registrations#edit

这是我的控制器

class RegistrationsController < Devise::RegistrationsController

  def build_resource(*args)
    super
    if session[:omniauth]
      @user.apply_omniauth(session[:omniauth])
      @user.valid?
    end
  end

  def edit_password
  end
end

这是before_filter方法

class ApplicationController < ActionController::Base
  protect_from_forgery

  private

    def authenticate_user!
        unless signed_in?
            redirect_to '/users/sign_in'
        end
    end
end

顺便说一下,路线是由设计提供给我的

1 个答案:

答案 0 :(得分:4)

过滤器由devise提供,因此请勿尝试弯曲。

在必需的controllers中使用它。

before_filter :authenticate_user!

如果您正在寻找处理未经身份验证的用户,可以在routes文件中执行此操作

  authenticated :user do
    root :to => "users#index"
  end

  unauthenticated :user do
    devise_scope :user do
      get "/" => "sessions#new"
    end
  end

希望下面部分已经设置

devise_for :users, :controllers => {:registrations => "registrations", :sessions => "sessions"}

copied from