Как я могу использовать метод (помощник), определенный в представлении в другом представлении? - PullRequest
0 голосов
/ 24 декабря 2018

Допустим, у меня есть форма, определенная в 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 голосов
/ 25 декабря 2018

Вы не можете поделиться кодом из одного представления в другое таким образом.Ваш фрагмент не работает, потому что 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/

...