Ruby on rails 在rails中为一个控制器和视图提供两个helper类是否可能/良好?
我有太多的函数需要在视图中使用,我的助手类看起来太长了。那么,对于一个控制器和一个视图,有两个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
如果是,如何定义第二个帮助器类?要创建新的帮助器: 为助手文件选择一个名称,例如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