如何在另一个视图中使用在一个视图中定义的方法(帮助程序)?

时间:2018-12-24 13:26:30

标签: hanami

假设我有一个在View中定义的表单

module Admin
  module Views
    module Dashboard
      class New
        include Admin::View

        def form
          form_for :link, routes.links_path do
            text_field :url
            submit 'Create'
          end
        end
...

我想念什么吗?因为下面的示例不起作用:

module Admin
  module Views
    module Dashboard
      class Index
        include Admin::View
        include Dashboard::New
...

1 个答案:

答案 0 :(得分:2)

您不能以这种方式将代码从一个视图共享到另一个视图。 您的代码段无效,因为Ruby不允许将类包含到其他类中。因此,如果要执行此操作-应该使用帮助程序模块。对于您的情况,它应如下所示:

module Admin
  module Helpers
    module Dashboard
      def form
        form_for :link, routes.links_path do
          text_field :url
          submit 'Create'
        end
      end
    end
  end
end

并将其包含在您的视图中

module Admin
  module Views
    module Dashboard
      class New
        include Admin::View
        include Admin::Helpers::Dashboard

        # ...
      end
    end
  end
end

或将其全局包含在您的应用中

# apps/admin/application.rb

view.prepare do
  include Hanami::Helpers
  include Admin::Helpers::Dashboard
end

文档:https://guides.hanamirb.org/helpers/custom-helpers/