Ruby on rails Rails助手作为一个类
我发现自己在写助手,使我的观点非常清晰;然而,助手并不是自然地以类的形式出现,只是模块内部的一组方法。因此,这些方法不会像使用参数调用initialized那样共享数据。因此,我最终多次传递数据。真烦人。有没有办法把它们放在一个共享值的类中 这是一个我正在尝试干涸的例子——是的,它远远不是最佳代码,请只关注我正在尝试整理的问题;我不想浪费时间做一个完美的例子。在下面的例子中,选项被传入,但我最终将它们传递给其他方法,等等Ruby on rails Rails助手作为一个类,ruby-on-rails,class,helper,Ruby On Rails,Class,Helper,我发现自己在写助手,使我的观点非常清晰;然而,助手并不是自然地以类的形式出现,只是模块内部的一组方法。因此,这些方法不会像使用参数调用initialized那样共享数据。因此,我最终多次传递数据。真烦人。有没有办法把它们放在一个共享值的类中 这是一个我正在尝试干涸的例子——是的,它远远不是最佳代码,请只关注我正在尝试整理的问题;我不想浪费时间做一个完美的例子。在下面的例子中,选项被传入,但我最终将它们传递给其他方法,等等 模块仪表板::仪表板帮助程序 定义菜单项(链接参考,选项={}) titl
模块仪表板::仪表板帮助程序
定义菜单项(链接参考,选项={})
title=options.fetch(:title,“”)
details=options.fetch(:details,“”)
highlight=options.fetch(:highlight,false)
icon=options.fetch(:icon,“”)
first=options.fetch(:first,false)
subs=options.fetch(:subs,[])
链接项目类别=(第一)?“m-t-30”:”
内容标签(:li,
菜单链接标签(链接参考、标题、详细信息、图标、突出显示),
类别:链接项目类别
)
结束
def菜单链接标签(链接参考、标题、详细信息、图标、突出显示)
链接到(菜单标签(标题、详细信息)、链接参考、类别:“详细”)+
图标\缩略图(图标,突出显示)
结束
def菜单标签(标题、详细信息)
内容标签(:范围、标题、类别:“标题”)+
内容标签(:范围、详细信息、类别:“详细信息”)
结束
def图标_缩略图(名称、族、高光=真)
类=(突出显示)?“bg成功图标缩略图”:“图标缩略图”
内容标签(:范围、图标(名称、族)、类:类)
结束
def图标(名称)
(姓名,现在吗?)?content_标记(:i,nil,class:“fas fa-#{name}”):“”
结束
结束
编辑:
选项哈希直接来自视图,通常采用以下形式:
没有任何东西可以阻止您自己在应用程序/视图帮助程序中使用某些类,并在视图中使用它们
# app/view_helpers/menu.rb
class Menu
attr_accessor :options
def initialize(options={})
# do something with your options
# self.options[:header] = options.fetch(:header, '')
end
def header
# use your options here
content_tag(:h1, options[:header])
end
end
# some_controller.rb
def index
@menu = Menu.new
end
# index.html.erb
<%= @menu.header %>
#app/view_helpers/menu.rb
班级菜单
属性存取器:选项
def初始化(选项={})
#用你的选择做点什么
#self.options[:header]=options.fetch(:header“”)
结束
def收割台
#在这里使用您的选项
内容标签(:h1,选项[:标题])
结束
结束
#一些_controller.rb
def索引
@menu=menu.new
结束
#index.html.erb
选项中的所有数据都来自同一个模型吗?这是一个直接来自视图的散列,我将在上面添加一个示例。不知道我为什么要把事情复杂化:)