掲示板を作ってみる・その7【スレッド用コントローラを編集】
掲示板を作ってみる・その1【何を作るの?】
掲示板を作ってみる・その2【モデルを作る パート1】
掲示板を作ってみる・その3【モデルを作る パート2】
掲示板を作ってみる・その4【ルーティングを考える】
掲示板を作ってみる・その5【コントローラを生成】
掲示板を作ってみる・その6【ヘルパを作る】
掲示板を作ってみる・その7【スレッド用コントローラを編集】
掲示板を作ってみる・その8【レス用コントローラを編集】
掲示板を作ってみる・その9【レイアウトファイルとスタイルシートファイルを作成】
掲示板を作ってみる・その10【スレッド用のビューファイルを作成】
掲示板を作ってみる・その11【レス用のビューファイルを作成】
掲示板を作ってみる・その12【ruby-gettext で日本語化】
スレッド用コントローラを編集しましょう。いきなりソースコード。
app/controllers/topic_controller.rb
class TopicController < ApplicationController
before_filter :set_default_html_title
def list
@topics = Topic.age_date_desc
end
def create
@topic = Topic.new(params[:topic])
@post = Post.new(params[:post])
Topic.transaction do
@topic.age_time = Time.now
@topic.save!
@post.topic_id = @topic.id
@post.res_no = 1 #1レス目
@post.ip_address = request.remote_ip
@post.save!
end
flash[:msg] = '新しいスレが立ちました'
@topics = Topic.age_date_desc
render :action => 'list'
rescue
@topics = Topic.age_date_desc
@html_title = 'ERROR'
render :action => 'list'
end
private
def set_default_html_title
@html_title = 'スレ一覧と作成とヒロシとキーボー'
end
end
・list メソッド
スレッド一覧な訳ですね。アゲ日時が新しい順から表示してみます。model ファイルで定義した named_scope がここで活きてくる訳です。
・create メソッド
スレッドを立ち上げがら、実は1レス目を書き込むことになりますので、Topic(スレッド) も Post(レス) も新規作成するようになります。
無事スレが立ち上がったら list のビューファイルを表示します。
もしエラーだったら rescue されて、list のビューファイルを表示します。
・set_default_html_title メソッド
@html_title には、<html><head><title>ここに入れるタイトル</title></head> を定義します。詳しくは後で作成する layout ファイルを見てください。
で、before_filter に、:set_default_html_title が指定されているので、この controller の list メソッドや create メソッドを呼ぶ前に、必ず set_default_html_title メソッドが呼ばれます。
説明粗くてスマソ。
おしまい。次回へ続く
【広告】