Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails助手作为一个类_Ruby On Rails_Class_Helper - Fatal编程技术网

Ruby on rails Rails助手作为一个类

Ruby on rails Rails助手作为一个类,ruby-on-rails,class,helper,Ruby On Rails,Class,Helper,我发现自己在写助手,使我的观点非常清晰;然而,助手并不是自然地以类的形式出现,只是模块内部的一组方法。因此,这些方法不会像使用参数调用initialized那样共享数据。因此,我最终多次传递数据。真烦人。有没有办法把它们放在一个共享值的类中 这是一个我正在尝试干涸的例子——是的,它远远不是最佳代码,请只关注我正在尝试整理的问题;我不想浪费时间做一个完美的例子。在下面的例子中,选项被传入,但我最终将它们传递给其他方法,等等 模块仪表板::仪表板帮助程序 定义菜单项(链接参考,选项={}) titl

我发现自己在写助手,使我的观点非常清晰;然而,助手并不是自然地以类的形式出现,只是模块内部的一组方法。因此,这些方法不会像使用参数调用initialized那样共享数据。因此,我最终多次传递数据。真烦人。有没有办法把它们放在一个共享值的类中

这是一个我正在尝试干涸的例子——是的,它远远不是最佳代码,请只关注我正在尝试整理的问题;我不想浪费时间做一个完美的例子。在下面的例子中,选项被传入,但我最终将它们传递给其他方法,等等

模块仪表板::仪表板帮助程序
定义菜单项(链接参考,选项={})
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

选项中的所有数据都来自同一个模型吗?这是一个直接来自视图的散列,我将在上面添加一个示例。不知道我为什么要把事情复杂化:)