rails将布局助手移动到它自己的模块中,与应用程序分开

时间:2011-07-09 15:21:09

标签: ruby-on-rails ruby-on-rails-3 layout module helper

我的目标是仅在application_helper中保留我在模板中使用的方法,否则我的application_helper会变得太长。

我的问题依赖于后缀Helper

此作品

# app/helpers
module ApplicationHelper
  include ApplicationLayout
end

# app/helpers/layouts
module ApplicationLayout
  def my_helper
    puts 'my_helper!'
  end
end

这不是

# app/helpers
module ApplicationHelper
  include ApplicationLayoutHelper
end

# app/helpers/layouts
module ApplicationLayoutHelper
  def my_helper
    puts 'my_helper!'
  end
end

错误是:

Expected app/helpers/layouts/application_layout_helper.rb to define Layouts::ApplicationLayoutHelper

所以我筑巢了,我得到了:

Routing Error undefined method `sub' for nil:NilClass

其实我想实现(发表您的观点)app/helpers/layouts/application_helper.rb但是它也会出现同样的错误,所以为了简单起见,我说了这个案例。

关于如何为布局提取辅助方法的任何建议?我可以使用配置吗?

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,我尝试了你所期待的,而且非常直接:

helpers/layouts/application_layout_helper.rb

中的

module Layouts
  module ApplicationLayoutHelper
    def my_helper
      'my_helper!' 
    end
  end
end
helpers/application_helper.rb

中的

module ApplicationHelper
  include Layouts::ApplicationLayoutHelper
end

广告在我看来我直接做:

<%= my_helper %>

我仍然不明白你会对这些方法做些什么。