我有一段我想要截断的段落,可以点击“阅读更多”,然后将其与其他内容一起滑开。内容来自数据库字段。这就是我对截断的看法:
<%= truncate(@major.glance, :length => 250, :omission => '... Read More')%>
我似乎找不到从数据库中提取数据的方法。我看到很多使用全文的示例,以及要隐藏在单独div标签中的文本。但是,由于此内容来自数据库并且是动态的,因此无法找到有关如何执行此操作的任何信息。
答案 0 :(得分:24)
您可以尝试以下
<div>
<% if @major.glance.length > 250 %>
<%= link_to_function truncate(@major.glance, length: 250), "$(this).parent().html('#{escape_javascript @major.glance}')" %>
<% else %>
<%= @major.glance %>
<% end %>
</div>
或者如果您更喜欢使用Read more
链接
<div>
<% if @major.glance.length > 250 %>
<%= truncate(@major.glance, length: 250) %>
<%= link_to_function '...Read more', "$(this).parent().html('#{escape_javascript @major.glance}')" %>
<% else %>
<%= @major.glance %>
<% end %>
<div>
<强>更新强>
由于在Rails 4中,link_to_function
已被弃用,建议使用非阻碍js,请使用以下
<div>
<% if @major.glance.length > 250 %>
<%= truncate(@major.glance, length: 250) %>
<%= link_to '...Read more', '', class: "read-more-#{@major.id}" %>
<script>
$('.read-more-<%= @major.id %>').on('click', function(e) {
e.preventDefault()
$(this).parent().html('<%= escape_javascript @major.glance %>')
})
</script>
<% else %>
<%= @major.glance %>
<% end %>
<div>
答案 1 :(得分:5)
我知道我加入这个对话有点晚了。我一直在解决同样的问题,尝试上面的解决方案,这很好。然而,隐藏的SEO明智内容并未被搜索引擎索引。我也检查了Lynx,并且无法跟踪链接(显然)。因此Jed Foster | readmore.js解决了这个解决方案 - lynx可以正确读取它,现在我正在等待SE索引更新,看看我是否能在搜索结果中找到自己。以防有人处于类似情况......