同志们,无知的我又来了 我用了<%= raw(blog.content) %>显示了全文 但是我想做到 wordpress 那种只显示部分 然后点查看全文才显示全部的那种效果 应该怎么做呢
<%= truncate(raw(blog.content),:length=>800) 这样的话出来的都是 html 代码了
<p> </p> <p style="margin: 15px 0px; padding: 0px; line-height: 1.4em; color: rgb(0, 0, 0); font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 14px; "> One of the most commonly overlooked and under-refined elements of a website is its pagination controls. In many ca...
在 3 楼搞错了,直接把 raw 移出来了,后面的对应括号也得移出去。<%= raw(truncate(blog.content,:length=>800)) %> 如果要求结束标签也对应,在字内容分析上得费点功夫,不知道有没有相应的插件。一般博客首页的摘要都是去掉 html 修饰的吧 <%= truncate(blog.content,:length=>800).gsub(/<.*?>/,'') %>
写 post 的时候,单独写一个 summary,显示 summary 就可以了。 summary 如果没有写,在截取字符串。 直接截取有可能出现半截标签,要截取 p 标签,完整的一个 p 标签,不要用字数来截取,应该可以较好的解决。
先 strip_tags,再截字: http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
不过这个方法性能不高,如果有大量的 html 需要做类似处理,推荐用 hpricot 来 strip
<%= (truncate(strip_tags(post.body), :length => 60, : omission => '...')).html_safe %>
在写文章时在合适的地方加上一个 <!--more-->
的标签,然后首页这样显示:
<%= raw post.content.split('<!--more-->')[0] %>
有个 gem 可以按 HTML 标签截取文本,不会把 HTML“切断”,参见这里 http://rubygems.org/gems/truncate_html 我自己的博客就是这么干的,在保存前冗余一个字段 https://github.com/edokeh/klog/blob/master/app/models/blog.rb
#20 楼 @edokeh 中文截取不显示问题解决了,在 .rvm/gems/ruby-2.0.0-p0/gems/truncate_html-0.9.2/lib/truncate_html/html_string.rb 修改 为 add \p{P}
private
def regex
/(?:<script.*>.*<\/script>)+|<\/?[^>]+>|[[[:alpha:]]\w\|`~!@#\$%^&*\(\)\-_\+=\[\]{}:;'",\.\/?]+|\s+|[[:punct:]]+|\P{P}/ #add \p{P}
end
看了你的博客不错,你的搜索用 google 搜索?哪里有 api ? 具体我没找到
<%= truncate(strip_tags(raw(item.topic_content)),:length=>300) %> 先将 html 标签用 strip_tags 过滤 然后再用 truncate 截取想要的长度字数即可~