我有些困惑,不知道该怎么做。
尝试进行一个
rescue_from NoMethodError, :with => :try_some_options
但是它没有起作用。
编辑: 为了测试,我正在进行简单的重定向。
def try_some_options
redirect_to root_url
end
编辑2:我的控制器示例。如下建议,添加了异常处理。
我知道我得到错误的原因。使用Authlogic和authlogic_facebook_connect插件。当用户从Facebook插件创建时,与用户相关联的“MyCar”模型不会像本地注册用户一样正常创建。由于我在不同部分引用用户车辆并调用用户模型,因此我想做类似下面看到的操作,并最终将其放入我的application_controller中。
class UsersController < ApplicationController
before_filter :login_required, :except => [:new, :create]
rescue_from NoMethodError, :with => :try_some_options
...
def show
store_target_location
@user = current_user
end
def create
@user = User.new(params[:user])
if @user.save
MyCar.create!(:user => @user)
flash[:notice] = "Successfully created profile."
redirect_to profile_path
else
render :action => 'new'
end
end
...
protected
def try_some_options(exception)
if logged_in? && current_user.my_car.blank?
MyCar.create!(:user => current_user)
redirect_to_target_or_default profile_path
end
end
...
end
第三次编辑:目前已经进行了黑客攻击,因为我知道为什么会出现错误,但是我想找出如何拯救 NoMethodError
class UsersController < ApplicationController
before_filter :login_required, :except => [:new, :create]
before_filter :add_car_if_missing
def add_car_if_missing
if logged_in? && current_user.my_car.blank?
MyCar.create!(:user => current_user)
end
end
end