« RailsでWikiクローンを作る | メイン | Wiki新設 »

2005年08月30日

RailsでWikiクローンを作る 5: ページ編集画面

DBテーブルの検索
新規作成ページの次は、ページを編集するための edit アクションを作ります。 app/controllers/wiki_controller.rb に以下のようなeditメソッドを作ります。
  def edit
    @page = Page.find_by_name(params[:id]) || Page.new(:name => params[:id])
  end
edit アクションは /wiki/edit/FrontPage のようにページ名を伴って呼び出されます。 前に説明した通り、アクション名の後のFrontPageの部分は ID と言い、コントローラの中で params[:id] で参照できます。
@page = Page.find_by_name params[:id] で、DBテーブルのnameカラムをparams[:id]の値(すなわちページ名)で検索して、最初に見つかった行を @page に代入します。 モデルの find_by_カラム名 というクラスメソッドは、カラムの値が引数で指定した値と一致する行を検索して、最初に見つかったものを返します。
指定したページが見つからなかったら、新たに Page のインスタンスを生成し、name 属性に指定のページ名を代入しています。

続いて、対応するビューのテンプレート app/views/wiki/edit.rhtml を作ります。
<% @title = "#{@page.name} の編集" %>
<div class="body">
<%= error_messages_for 'page' %> 
<%= start_form_tag :action => 'update', :id => @page.name %>
  <p><label for="page_title">タイトル</label>
  <%= text_field 'page', 'title'  %></p>
  <p><label for="page_content">内容</label><br/>
  <%= text_area 'page', 'content'  %></p>
  <p><%= check_box 'page', 'freezeflag', {}, true, false %>
  <label for="page_freeze">ページの凍結</label></p>
  <%= submit_tag "保存" %>
<%= end_form_tag %>
</div>
フォームのヘルパーメソッドが何種類か増えていますが、基本的にページの新規作成のビューと大きな違いはありません。 text_area は textarea のフォームを生成するヘルパーメソッドです。 check_box は checkbox タイプの input フォームを生成します。
この段階で、http://localhost:3000/wiki/edit/FrontPage のように、適当にページ名をつけてブラウザでアクセスすると以下のような画面が現れます。

編集フォーム

そして、保存できるように app/controllers/wiki_controler.rb に update アクションを作ります。
  def update
    @page = Page.find_by_name(params[:id]) || Page.new(:name => params[:id])
    params[:page][:content] = params[:page][:content].gsub(/\r\n/, "\n")
    if @page.update_attributes(params[:page])
      redirect_to :action => 'show', :id => @page.name
    else
      render :action => 'edit'
    end
  end
Page.find_by_name で、params[:id]で指定されるページ名の行を検索します。 そして、content の改行コードを変換した後、update_attributes で行を更新します。 @page.update_attributes(params[:page]) は、入力フォームで入力された値に基づき、DBテーブルの既存の行を更新する場合の常套句です。

投稿者 tam : 2005年08月30日 08:14

トラックバック

このエントリーのトラックバックURL:
http://tam.qmix.org/mt3/mt-tb.cgi/12

このリストは、次のエントリーを参照しています: RailsでWikiクローンを作る 5: ページ編集画面:

» montagna from montagna
montagna [続きを読む]

トラックバック時刻: 2007年02月02日 19:00

» adult image open directory from adult image open directory
[続きを読む]

トラックバック時刻: 2007年04月22日 08:02

» free thumbnail cartoon porn gallery, jetsons from free thumbnail cartoon porn gallery, jetsons
[続きを読む]

トラックバック時刻: 2007年04月23日 09:14

» little asshole from little asshole
[続きを読む]

トラックバック時刻: 2007年04月24日 03:14

» young lesbians porn thumbs from young lesbians porn thumbs
[続きを読む]

トラックバック時刻: 2007年04月25日 05:06

コメント

コメントしてください




保存しますか?