rails2.2.2でminkiに挑む
んじゃー嘘つきにならないようにrailsやろう。
教材:http://tam.qmix.org/wiki/Minki00.html
railsでwikiを作ろうってもの。
「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!'と怒られる。明示的に名前を指定するようになったのかな?
ページ編集画面
- 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
は、公開されてるソースから流用するしかない。