サイトのページにブログ投稿を作成するために使用する投稿モデルがあります。投稿のコンテンツを HTML 形式にしたいのですが、実際に HTML で表示するのに苦労しています。ブログページではプレーンテキストとしてのみ表示されます。それが違いを生む場合、私はRails_Adminを使用しています。
posts
見る:
#blog_page
- @posts_list.each do |post|
%ul.post
%li= post.created_at.strftime("%B %d, %Y")
%li.title= post.title
%li.author
= 'By: '
= post.author
%li.content= RedCloth.new(post.content).to_html
= paginate @posts_list
post
モデル:
class Post < ActiveRecord::Base
attr_accessible :content, :title, :author
has_many :comments
validates :title, :presence => true
validates :content, :presence => true
end
posts
コントローラ:
class PostsController < ApplicationController
before_filter :authenticate_user!, :only => [:new, :create]
# GET /posts
def index
@posts_list = Post.order("created_at DESC").page(params[:page]).per(5)
render 'blog'
end
# GET /posts/
def show
@post = Post.find(params[:id])
render 'show'
end
def new
if !current_user.admin?
redirect_to '/blog'
end
@post = Post.new
end
# POST /posts
def create
@post = Post.new(params[:post])
if current_user.admin?
respond_to do |format|
if @post.save
format.html { redirect_to('/posts', :notice => 'Post was successfully created.') }
format.json { render :json => @post, :status => :created, :location => @post }
else
flash[:notice] = 'Error creating post!<br/>'.html_safe
@post.errors.full_messages.each do |msg|
flash[:notice] << "<br/>".html_safe
flash[:notice] << msg
end
format.html { render :action => "new" }
format.json { render :json => @post.errors, :status => :unprocessable_entity }
end
end
else
redirect_to '/blog'
end
end
end