Уточнение: Создатель поста должен иметь возможность решить, когда должно произойти усечение.
Я реализовал в своем блоге функцию, подобную Wordpress [--- MORE ---], с помощью следующей вспомогательной функции:
# application_helper.rb
def more_split(content)
split = content.split("[---MORE---]")
split.first
end
def remove_more_tag(content)
content.sub(“[---MORE---]", '')
end
В индексном представлении тело сообщения будет отображать все до (но без) тега [--- MORE ---].
# index.html.erb
<%= raw more_split(post.rendered_body) %>
И в представлении показа будет отображаться все из тела сообщения, кроме тега [--- MORE ---].
# show.html.erb
<%=raw remove_more_tag(@post.rendered_body) %>
Это решение в настоящее время работает для меня без каких-либо проблем.
Поскольку я все еще новичок в программировании, мне постоянно интересно, есть ли более элегантный способ сделать это .
Как бы вы это сделали?
Спасибо за ваше время.
Это обновленная версия:
# index.html.erb
<%=raw truncate(post.rendered_body,
:length => 0,
:separator => '[---MORE---]',
:omission => link_to( "Continued...",post)) %>
... и в режиме просмотра:
# show.html.erb
<%=raw (@post.rendered_body).gsub("[---MORE---]", '') %>