【问题标题】:How to truncate ActionText output without trix formatting info如何在没有矩阵格式信息的情况下截断 ActionText 输出
【发布时间】:2021-08-24 22:25:37
【问题描述】:

我有一个 Rails 操作文本字段 :content,如果我接受整个字段,它会呈现良好,但它很长,我只想显示它的一部分。

<%= year.content %> 工作正常,只是它太长了。

<%= year.content.truncate(70) %> 导致undefined method 'truncate' for #<ActionText::RichText:0x00007ffb811a6060>

<%= year.content.to_s.truncate(70) %> 显示我可以使用的<div class="trix-content"> <div> <strong>Jack Marietich, restaura...,但有没有一种方法我不必去掉开头?

【问题讨论】:

    标签: ruby-on-rails string actiontext


    【解决方案1】:

    Trix using rails actiontext add pure html 在我发帖之后出现,但之前没有出现。

    <%= year.content.to_plain_text.truncate(70) %>
    

    https://api.rubyonrails.org/classes/ActionText/RichText.html#method-i-to_plain_text 但即使我找到了它,我也不确定我是否会明白这就是我所需要的。

    【讨论】:

    • 截断应该在模型级别使用公共方法完成
    【解决方案2】:

    如果您这样做是为了预览,您可以去除标签然后截断。像这样的:

    <%= truncate(strip_tags(year.content.to_s), length: 70) %>
    

    并不是说我提倡给猴子打补丁,但如果这是您计划经常使用的东西,这似乎是添加自定义方法的好选择。

    【讨论】:

    • 谢谢,这确实有效,但下面的答案更简洁。
    【解决方案3】:

    如果您想保留样式,但要截断内容(后跟“阅读更多”或类似内容),请查看以下 css:

    .line-clamp {
      display: -webkit-box;
      -webkit-line-clamp: 3; // number of lines
      -webkit-box-orient: vertical;  
      overflow: hidden;
    }
    
    <div class="line-clamp">
     <%= year.content %>
    </div>
    

    然后您可以使用一些基本的 JS 切换来移除 line-clamp 类以显示其余内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      相关资源
      最近更新 更多