Ruby on rails 在rails中为一个控制器和视图提供两个helper类是否可能/良好?

Ruby on rails 在rails中为一个控制器和视图提供两个helper类是否可能/良好?,ruby-on-rails,model-view-controller,Ruby On Rails,Model View Controller,我有太多的函数需要在视图中使用,我的助手类看起来太长了。那么,对于一个控制器和一个视图,有两个helper类是可能的/好的吗 如果是,如何定义第二个帮助器类?要创建新的帮助器: 为助手文件选择一个名称,例如my_helper.rb 在/app/helpers目录中创建文件 根据文件名创建模块。在这种情况下 module MyHelper end 将助手定义为方法 module MyHelper def hello_world(name) "hello #{name}" end

我有太多的函数需要在视图中使用,我的助手类看起来太长了。那么,对于一个控制器和一个视图,有两个helper类是可能的/好的吗


如果是,如何定义第二个帮助器类?

要创建新的帮助器:

为助手文件选择一个名称,例如my_helper.rb 在/app/helpers目录中创建文件 根据文件名创建模块。在这种情况下

module MyHelper
end
将助手定义为方法

module MyHelper
  def hello_world(name)
    "hello #{name}"
  end
end
试试这个

rails new example_app
cd example_app/
rails g scaffold Page title:string
rake db:migrate
rails s -p 3001
现在创建2个帮助程序:

touch ./app/helpers/a_helper.rb
touch ./app/helpers/b_helper.rb
现在将以下模块放入各自的文件中

module AHelper
  def same_method_name
    "Hi from AHelper"
  end
end

module BHelper
  def same_method_name
    "Hi from BHelper"
  end
end
现在在./app/views/pages/index.html.erb中,将这个助手方法放在某个地方

<%= same_method_name %>
super将继续沿着继承链向上,到下一个名为“相同的方法”的方法,该方法是AHelper的相同的方法,因此您将从AHelper获得Hi


Rails帮助器是好的,如果需要一个简单快捷的解决方案,但是如果需要更多的封装考虑使用装饰器模式,例如使用德雷珀的宝石,则不需要步骤5。

module BHelper
  def same_method_name
    "Hi from BHelper #{super}"
  end
end