0

我正在使用 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>

谢谢大家!

我最后的手段是在数据库中为“他们可以自己编写的摘录”创建一个新列。无论如何,这可能是一个更好的主意。

4

1 回答 1

1

你需要strip_tags加上truncate

truncate(strip_tags(post.text), length: 100, separator: ' ')

并且您应该将 before_save 回调中的结果保存到您讨论过的特殊字段中以进行优化。

于 2013-09-12T03:33:57.293 回答