Rails actiontext/trix 显示问题

Posted

技术标签:

【中文标题】Rails actiontext/trix 显示问题【英文标题】:Rails actiontext/trix display issues 【发布时间】:2020-06-24 16:20:48 【问题描述】:

我正在尝试将富文本编辑器合并到我的应用程序中,但没有运气。我打算使用 CKEditor,但发现 Rails 6 已经很好地集成了 actiontext/trix.... 或者我是这么认为的。

我按照https://edgeguides.rubyonrails.org/action_text_overview.html的标准安装步骤进行

所以,除非我遗漏了什么,我现在在这些文件中有以下代码:

app/javascript/packs/actiontext.scss

@import "trix/dist/trix";

.trix-content 
  .attachment-gallery 
    > action-text-attachment,
    > .attachment 
      flex: 1 0 33%;
      padding: 0 0.5em;
      max-width: 33%;
    

    &.attachment-gallery--2,
    &.attachment-gallery--4 
      > action-text-attachment,
      > .attachment 
        flex-basis: 50%;
        max-width: 50%;
      
    
  

  action-text-attachment 
    .attachment 
      padding: 0 !important;
      max-width: 100% !important;
    
  

app/javascript/packs/application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

import $ from 'jquery';
import 'bootstrap/dist/js/bootstrap';

$(document).on('turbolinks:load', function() 
  $('body').tooltip(
    selector: '[data-toggle="tooltip"]',
    container: 'body',
  );

  $('body').popover(
    selector: '[data-toggle="popover"]',
    container: 'body',
    html: true,
    trigger: 'hover',
  );
);

require("trix")
require("@rails/actiontext")

app/javascript/packs/application.scss

@import "./actiontext.scss";

我希望编辑器显示的模型是: app/models/note.rb

class Note < ApplicationRecord
  has_rich_text :comment
end

关联的视图/表单现在在下面,只有 comment 字段是启用丰富的字段: app/views/notes/edit.html.erb

<%= form_for @note, url: project_target_note_path(id: @note.id) do |f| %>
    <div class="form-group">
        <%= f.label :title %>
        <%= f.text_field :title, class: "form-control" %>
    </div>
    <div class="form-group">
        <%= f.label :comment %>
        <%= f.rich_text_area :comment, cols: 20, rows: 40, class: "form-control" %>
    </div>
    <div>
        <%= f.submit "Update", class: "btn btn-success" %>
    </div>
<% end %>

我在这里不知所措......根本没有显示任何按钮:

我错过了什么?

更新 1: 我将 actiontext.scss.../packs/ 移到 app/assets/stylesheets/ 并更改了一些导入:

所以,现在app/assets/stylesheets/application.scss 很简单:

//= require actiontext

我重新启动了 webpacker 和我的 rails 服务器:

> bin/webpack-dev-server
> rails s

现在我得到了按钮,但它们没有图标:

更新 2:

得到按钮以显示图标......终于。不确定这是否正确,因为它没有记录,但我必须手动导入application.scss

../layouts/application.html.erb 我补充说:

<%= stylesheet_link_tag "application" %>

【问题讨论】:

欢迎来到 ActionText/ActiveStorage 马戏团!您的浏览器控制台是否出现任何错误? 什么都没有! 我通过将actiontext.scss 移动到app/stylesheets/ 取得了一些进展。现在我得到了按钮,但它们只是一堆文本,没有图标...... 您能否检查一下您的 actiontext.scss 或 application.scss 中是否还需要“trix”?顺便说一句,我认为您需要自己设置高度,行/列属性似乎没有任何作用 .form-control.trix-content min-height:300px;最大高度:80%;高度:50%;溢出-y:自动; 【参考方案1】:

对于rails 6,您需要在javascript/packs/application.js 中添加import 'trix/dist/trix.css';(用于css 样式)

【讨论】:

【参考方案2】:

如果有人在这里遇到同样的问题: 对我来说,它有助于在application.scss 中导入 trix 样式和新的 actiontext 样式表(不仅仅是 Rails 指南中建议的样式表)。 对我来说,顺序也很重要!

// application.scss
@import "trix/dist/trix";
@import "./actiontext.scss";

【讨论】:

【参考方案3】:

虽然我认为这不是一个理想的解决方案,但我在上面提供了 2 个更新,似乎可以解决我的问题。

1:将actiontext.scss 保留在app/assets/stylesheets(最初生成的位置)中。

2:在..layouts/application.html.erb中手动导入application.scss

【讨论】:

以上是关于Rails actiontext/trix 显示问题的主要内容,如果未能解决你的问题,请参考以下文章

Rails Simple Form Bootstrap - 显示输入的 Javascript if 语句

Rails 5 - 使用多态关联 - 渲染视图

如何显示 RSpec 测试生成的 SQL 查询日志?

Rails 视图 - 用户输入分钟,我们节省秒?

Rails 3 link_to 路由(编辑)嵌套资源

如何在没有 AJAX 的情况下在 Rails 客户端过滤数据