Как реализовать Action Text в Rails 5.2.1? - PullRequest
0 голосов
/ 16 декабря 2018

Я испытываю трудности с внедрением гема Action Text в мое приложение Rails 5.2.1 .

Я следовал руководству по установке, и текстовый редактор не отображался в моем виде _form.

Затем я понял, что для него требуется Rails 6 с webpacker и активное хранилище .Изменение версии Rails моего гемфайла и запуск rails upgrade не работали, поэтому я добавил веб-упаковщик и гемы активного хранилища и связал его с моей текущей версией 5.2.1.Это тоже не сработало.

Мне бы очень хотелось, чтобы в моем приложении был Rich Text Editor.Не обязательно, чтобы это был редактор Trix, но так как он будет нативным с v6, я подумал, что это был очевидный выбор.

Ссылки моего исходного кода

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Идеальный выбор, протестировано на моем новом приложении с использованием направляющих 5.2.3.пожалуйста, не текст действия требует ruby ​​2.5.3.первое: Добавить веб-упаковщик

Вы можете добавить веб-упаковщик во время установки нового приложения Rails 5.1+ с помощью новой опции --webpack:

Доступные Rails 5.1 +

rails new myapp --webpack

Или добавьте его в свой Gemfile:

Gemfile

gem 'webpacker', '~> 4.x'

ИЛИ, если вы предпочитаете использовать master

gem 'webpacker', git: 'https://github.com/rails/webpacker.git'
yarn add https://github.com/rails/webpacker.git

Теперь добавьте Actiontext в свой файл gem с помощью image magic:

gem'actiontext',github:'kobaltz/actiontext',branch:'archive',require:'action_text'
gem 'image_processing'

Наконец, запустите следующее для установки Webpacker:

bundle
bundle exec rails webpacker:install

rails action_text:install
rails db:migrate
brew install imagemagick vips

добавьте это к вашему представлению / макету / приложению в разделе head

#layouts/application.html.erb
<%= javascript_pack_tag 'application' %>

Inваша модель, это может быть статья или что-либо еще в вашей модели

class Article < ApplicationRecord
  has_rich_text :content
end

в вашем контроллере

 #controllers/articles_controller.rb
    def article_params
      params.require(:article).permit(:name, :content)
    end

в вашей форме

#_form.html.erb
<div class="field">
  <%= form.label :content %>
  <%= form.rich_text_area :content %>
</div>

окончательно для отображениясодержимое в вашем представлении;

<h1><%= @article.name %></h1>
<p><%= @article.content %></p>

Необязательно: Чтобы исправить предупреждения о «неудовлетворенной зависимости от сверстников»,

yarn upgrade

вы можете посмотреть полное видео здесь: https://www.driftingruby.com/episodes/using-action-text-in-a-rails-5-2-application

0 голосов
/ 02 января 2019

У меня есть частичный ответ для вас!Я хотел использовать Trix, Rails 5.2.2 и Webpacker, но не смог найти четкого ответа.Камень трикс не работал, так как я вообще не использую конвейер активов.(Я также использую Turbolinks и Stimulus, и пока что они работают нормально вместе с ними.)

Я связал решение вместе, используя:

Теперь я могу использовать помощник по форме, который выглядит следующим образом (с использованием языка шаблонов Slim):

= f.trix :personal_notes, class: 'some-css-class'

Чтобы добраться туда, я сделал следующее:

  1. yarn add trix
  2. В моем пакете Javascript import 'trix';
  3. В моем пакете CSS @import '~trix/dist/trix';
  4. Затем я создал помощник по форме.Вот как это выглядело:

В app/helpers/application_helper.rb я добавил новый помощник по форме, основанный на том посте стека, который я связал выше.Мой файл теперь выглядит так:

module ApplicationHelper
    # ...

    class ActionView::Helpers::FormBuilder
        # include ActionView::Helpers::TagHelper # I didn't need this.
        include ActionView::Helpers::FormTagHelper
        include ActionView::Helpers::FormOptionsHelper
        # include ActionView::Helpers::CaptureHelper  # I didn't need this.
        # include ActionView::Helpers::AssetTagHelper  # I didn't need this.

        # since these tag helpers just return strings, it is easy to make a pretty 
        # powerful helper.  It is probably possible to use existing Rails form 
        # helpers to aid this as well.
        def trix(method, options = {})
          value = (@object[method].empty?) ? '' : "value='#{@object[method]}'" 
          return "<input id='#{field_id(method)}' type='hidden' name='#{field_name(method)}' #{value}><trix-editor input='#{field_id(method)}' class='trix-content #{options[:class]}'></trix-editor>".html_safe
        end

        def field_name(label,index=nil)
          return @object_name + "[#{label}]"
        end

        def field_id(label,index=nil)
          return @object_name + "_#{label}"
        end

    end
end

Перезапустите Rails.Кажется, работает на меня.

...