仅从博客文章中获取包含图像,表格等的文本

时间:2013-09-12 02:46:14

标签: ruby-on-rails blogs

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

全部谢谢!

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

1 个答案:

答案 0 :(得分:1)

您需要strip_tagstruncate

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

您应该将before_save回调中的结果保存到您讨论优化的特殊字段中。