在Phoenix Framework中截断文本

And*_*rie 1 elixir ecto phoenix-framework

我有一个名为内容的文本字段,需要显示其摘录。

做这个的最好方式是什么?

就像是:

<% post.content.slice(0..50) %>
Run Code Online (Sandbox Code Playgroud)

我的想法是 但是,这给了我一个参数错误。

显示内容文本字段的前50个字符的最佳方法是什么?

或者-在将数据创建/保存到数据库后是否可以创建摘录字段?

任何帮助表示赞赏。提前致谢。

NoD*_*ame 5

defmodule MyApp.StringFormatter do

  def truncate(text, opts \\ []) do
    max_length  = opts[:max_length] || 50
    omission    = opts[:omission] || "..."

    cond do
      not String.valid?(text) -> 
        text
      String.length(text) < max_length -> 
        text
      true ->
        length_with_omission = max_length - String.length(omission)

        "#{String.slice(text, 0, length_with_omission)}#{omission}"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这就是我在应用程序中使用的方式,我相信我会从某个地方无耻地复制并粘贴它,但是它的效果很好,显然您可以根据需要进行修改。

但是,如果您不需要这种花哨的催眠术,那么

String.slice(post.content, 0..50)
Run Code Online (Sandbox Code Playgroud)

应该很好