我正在使用Rails 4.0.0和CKEDITOR为客户构建一个小博客,而我在显示最近十篇帖子和一小段摘录的页面上遇到了问题。
如果图像被插入到帖子,表格或任何其他html元素中,那么也是如此。
我可以抓住文字,没有图片,桌子等吗?
这是我的控制器代码:
class PostsController < ApplicationController
before_filter :authorize, only: [:new, :create, :edit, :update]
def index
@posts = Post.all
end
def new
@post = Post.new
end
def create
@post = Post.new(params[:post].permit(:title, :text, :photo))
if @post.save
redirect_to @post
else
render 'new'
end
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(params[:post].permit(:title, :text, :photo))
redirect_to @post
else
render 'edit'
end
end
def destroy
Post.find(params[:id]).destroy
redirect_to posts_path
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :text, :photo)
end
end
我的观看代码:
<% @body_class = "blog" %>
<div class="wrap">
<h1>Listing posts</h1>
<p><%= link_to 'New post', new_post_path, 'data-no-turbolink' => 'false' %></p>
<% @posts.each do |post| %>
<div class="post" id="<%= post.id %>">
<div class="postTitle">
<%= post.title %>
</div>
<div class="postContent">
<%= post.text.html_safe %><br/><br/>
<%= link_to 'Show', post_path(post) %>
<% if current_user %>|
<%= link_to 'Edit', edit_post_path(post), 'data-no-turbolink' => 'false' %> |
<%= link_to 'Destroy', post_path(post), :confirm => 'Are you sure you want to delete this post?', :method => :delete %>
<% end %>
</div>
</div>
<% end %>
</div>
全部谢谢!
我的最后一招是在数据库中创建一个新列,以便“他们可以自己编写摘录。无论如何,这可能是一个更好的主意。
答案 0 :(得分:1)
truncate(strip_tags(post.text), length: 100, separator: ' ')
您应该将before_save回调中的结果保存到您讨论优化的特殊字段中。