rails2.2.2でminkiに挑む

んじゃー嘘つきにならないようにrailsやろう。


教材:http://tam.qmix.org/wiki/Minki00.html
railswikiを作ろうってもの。
rails覚えようとチュートリアル終わったけど、次に何したらいいのか分からない」人向けだそうな。


つまりどころを備忘録として。
というわけでgo

DBはmysql

rails -d mysql minki

モデル作成

スキーマ定義を多少変更

./script/generate model page
vi db/migrate/20081129131225_create_pages.rb
class CreatePages < ActiveRecord::Migration
  def self.up
    create_table :pages do |t|
        t.string :name, :default => "", :null => false
        t.string :title
        t.string :content
        t.boolean :freezed, :default => 0

        t.timestamps
    end
  end

  def self.down
    drop_table :pages
  end
end

何もせんでも勝手にutf8になります

config/environment.rb
app/controller/application.rb

はいじらなくてもよし

start_form_tagなどの廃止

  • before
<%= start_form_tag :action => 'create' %>
  <%= text_field 'page', 'name' %>
  <%= submit_tag "Create" %>
<%= end_form_tag %>

start_form_tagなどはとうの昔に使えなくなった。
参考:http://mykits.blog80.fc2.com/blog-entry-31.html

  • after
<% form_tag ( :action => 'create' ) do %>
    <%= text_field_tag :page %>
    <%= submit_tag 'Cearch' %>
<% end %>

パラメータの受け取り

  • diff
 def create
-   @page = Page.new(params[:page])
+   @page = Page.new(:name => params[:page])
   if @page.save
     redirect_to :action => 'edit', :id => @page.name
   else
     render :action => 'new'
   end
 end

こうしないとundefined method `stringify_keys!'と怒られる。明示的に名前を指定するようになったのかな?

layout

前述の通り、
app/views/layouts/wiki.rhtml
じゃなくて
app/views/layouts/wiki.html.erb
ね。

Hikiのthemaを持ってくる

あとは、public ディレクトリに Hiki から theme ディレクトリをコピーしてきて配置すれば

いきなりそんなこと言われてもwww
というわけで Hiki でググってソース持ってきて展開して言われた通りにする。

ページ編集画面

  • diff
 <% @title = "#{@page.name} の編集" %>
 <div class="body">
 <%= error_messages_for 'page' %> 
-  <%= start_form_tag :action => 'update', :id => @page.name %>
+  <% form_tag ( :action => 'update', :id => @page.name ) do %>
   <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 %>
+  <p><%= check_box 'page', 'freezed', {}, true, false %>
   <label for="page_freeze">ページの凍結</label></p>
   <%= submit_tag "保存" %>
- <%= end_form_tag %>
+ <% end %>
 </div>

まんなかのdiffはスキーマ定義を変えたから。

ページ表示

parser_default.rb
formatter_default.rb
は、公開されてるソースから流用するしかない。