Rails 控制器引用模型时就说方法不存在

rails123 · June 16, 2012 · Last by rails123 replied at June 16, 2012 · 2238 hits

控制器引用模型时就说方法不存在,怪的是在 AController 正常,但在 BController 就说 ActionView::TemplateError (undefined method idno' for nil:NilClass) 并且在AView <%= @current_user.idno %>正常。 但在BView <%= @current_user.idno %> 时也报同样错: ActionView::TemplateError (undefined methodidno' for nil:NilClass)

代码如下:

ApplicationController < ActionController::Base
    @current_user = User.find_by_id(params[:user_id])
......

end

AController < ApplicationController
    @contas = Conta.find(:first,:conditions =>  ["idno=?", @current_user.idno])

..........
end

BController < ApplicationController
    @contas = Conta.find(:first,:conditions =>  ["idno=?", @current_user.idno])

..........
end
Unknow user #1 June 16, 2012

id 为空 所以 current_user 是 nil

还是先学 ruby 再学 rails,能避免很多小问题

在 ApplicationController < ActionController::Base @current_user = User.find_by_id(params[:user_id]) 里已得非空@current_user,且在并且在 AView <%= @current_user.idno %>已正常现示。

在 ApplicationController < ActionController::Base @current_user = User.find_by_id(params[:user_id]) 里已得非空@current_user,且在并且在 AView <%= @current_user.idno %>已正常现示。

的确挺诡异,不能确定是你其他的代码的问题么?或者 id 号没有传递?

AController 和 BController 及都没对@current_user作任何改变,又都是从 ApplicationController 导出,但@current_user在 AController 非空,在 BController 就变空了。

You need to Sign in before reply, if you don't have an account, please Sign up first.