升级到Rails 4.1.1后的未定义的辅助方法

时间:2014-05-26 19:33:54

标签: ruby-on-rails ruby-on-rails-4.1

升级到Rails 4.1.1后,我无法访问辅助方法。我的申请中有以下代码。

module ApplicationHelper

    def last_page_url
       session[:last_page]
    end

end

class Admin::ArticlesController < ApplicationController

    def update
       #....more code here
       return redirect_to self.last_page_url
    end

end

在Rails 4.0.x中,这段代码运行良好。升级到Rails 4.1.1后,我收到错误&#34;未定义的方法&#39; last_page_url&#39;每当我的update动作运行时。为什么现在这会破裂?

1 个答案:

答案 0 :(得分:1)

我不确定为什么在升级到Rails 4.1.1后它停止工作,但正如@steel建议的那样,它与我的特定控制器中没有包含的辅助方法有关。将include ApplicationHelper添加到我的控制器顶部会起作用,我可能已经将它添加到ApplicationController类中,因为我需要所有控制器都可用的方法。最后,我选择了另一种解决方案:

首先,我将last_page_urlApplicationHelper移到ApplicationController类,以便我的所有控制器都可以访问它。然后我使用helper_method使这个方法适用于我的所有视图。我的最终代码如下:

module ApplicationHelper

end

class ApplicationController < ActionController::Base
    # Prevent CSRF attacks by raising an exception.
    # For APIs, you may want to use :null_session instead.
    protect_from_forgery with: :exception

    def last_page_url
       session[:last_page]
    end
    helper_method :last_page_url

如果有人想出从Rails 4.0改为Rails 4.1的东西,我会有兴趣了解发生的事情。在这个特定的应用程序中,我只使用了我的development.rb中的默认Rails 4.1设置。