2010-08-11から1日間の記事一覧

画面ロード時にメッセージをフェイドアウト

前も使ってたんだけどいざもう一度使おうとしたら思い出せなくて、きっとまた忘れると思うのでメモっておく。JavaScript: $(function(){ $(".notice").fadeOut(6000); }); HTML: <p class="notice">ほげほげ</p> こんな感じで書いておくと、HTMLファイルロード時にnoticeクラスを指…

Simplenote restyledをいじる

iPhoneのメモアプリはSimplenoteを使っています。ちょっと前までWriteRoomを使ってたんだけど、SimpleText.wsと同期すると濁点つき日本語がおかしくなるので今は様子見中。SimpleText.wsすごく好きなので直ればいいんだけど、マルチバイトのお話だし海外サイ…

gemの使い方

しばらく音沙汰有りませんでしたが、お仕事でRubyをいじりはじめました。ということでメモメモ。 gem list インストールされているパッケージを一覧表示 gem install xxxxxx (-v=X.X.X) 指定パッケージのインストール(-vでバージョン指定) gem uninstall x…

Railsをはじめてみるよ

ということでRails。 CakePHPにもRoRのようなscaffold機能があったけど、いかんせん会社のカラム命名規則がおかしかったせいで自動作成周りの美味しい機能は全く使用しなかった(できなかったともいう)。 ということで、このへんの機能を触るのはほぼ初。実…

まずはプロジェクト作成

RadRailsを起動 Ruby エクスプローラー上で右クリック>新規>Rails プロジェクト プロジェクト名に「ToDo」あとはデフォルトでOK。「プロジェクト作成後にサーバーを自動開始」にチェックを入れておくと自動実行されるのでチェックに便利。 新規プロジェク…

scaffoldでテーブル自動生成

ウィンドウ>ビューの表示>ジェネレーター を選択し、「ジェネレーター」ビューを画面に表示する 生成プログラムに「scaffold」パラメーターに「Category category:string」を指定して右端の緑三角ボタンをクリック script/generate scaffold Category cate…

CRUDとかRESTfulとかrouteとか

CakePHPと同様、RoRもCRUD(Create, Read, Update, Delete)なディレクトリ構成でアクセスする。 RESTfulとはなんぞやについてはこちらを参照。もしくは資料のP.12〜13辺りに詳しい。RoRの場合はrakeコマンドを使用することでアプリケーションのメソッドに対…

バリデーションを追加してみる

db/models/category.rb を開き以下を記述。 class Category < ActiveRecord::Base # 未入力チェック validates_presence_of :category, :message => "が未入力です。" # 文字数チェック(20文字以内/半角全角共通) # 末尾のif文は「categoryが未入力ではな…

i18nで簡単日本語化(Rails2.2.x)

Rails 2.2以上の機能らしい。実行環境を2.1にバージョンダウンしたら使えなくて涙目。 i18nによる日本語化 - challenge Ruby on Rails i18nによる日本語化についてはこのページにまるまる書いてある。CakePHPの場合は国際化が結構面倒で結局日本語ベタコーデ…

リレーションシップを設定する

資料のP.23を参考に、次はitemテーブルを追加。先のcategoryテーブルとの関係は「多対1」となるので、モデルにもその辺りを設定しておく必要がある。この辺はCakePHPと同じくHABTM(hasOne, hasMany, belongsTo, hasAndBelongsToMany)なのでそんなに悩まな…

scaffoldで覚えておくと良いこと

script/generate scaffold item done:boolean priority:integer description:string due_date:date category_id:integer note_id:integer private:boolean exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/items exists a…

コントローラで覚えておくと良いこと

Model.find(:all) と Model.all は同じこと。 なので、 Model.find(:all, :order => :category) は Model.all(:order => :category) と書いても動作する。 CakePHPでもfindとfindAll、saveとsaveAllとかあったっけ。

ビューで覚えておくと良いこと

<%= h category.category %> hをつけると自動的に内容をHTMLエスケープしてから出力してくれる。 <%= link_to "Destroy", category, :confirm => "Are you sure?", :method => :delete %> link_toに:confirmをつけると、選択リンクの処理を実行する前に確認…

ヘッダ出力

<% @heading = "データ一覧" %> とするだけで、<title>タグと<h1>タグに指定した文字列を出力してくれる。</h1>

処理完了メッセージをビューに投げる

layouts/application.html.erb <% if flash[:notice] %> <p class="notice"><%=h flash[:notice] %></p> <% end %> controllers/xxxxxx.rb # リダイレクト先で表示したいメッセージをセット flash[:notice] = "処理が完了しました。" # リダイレクト先を指定 format.html { redirec…

改行コードを表示に反映させる

app/helpers/application_helper.rb にこんな感じに記述。 module ApplicationHelper # HTMLで書けない文字の実体参照と改行コードのHTMLへの置換を行う def hbr(target) target = html_escape(target) target.gsub(/\r\n|\r|\n/, "<br />") end end 使用時は <%=h…

コントローラとビューでセッションを使ってやりとり

リンクを作成する。 <%= link_to t("link.New_note"), {:controller => "notes", :action => "new", :id =>@item.id} %> リンクをクリックするとコントローラにidが渡されるので、それをセッションに格納する。 # 渡されたIDを格納する session[:item_id] = …

Subclipseでハマる

問題:Subclipseを入れてもSVNが使えない。 具体的には SVNリポジトリに追加 ツリーを開こうとクリック 「unable to load default svn client」と怒られる ウィンドウ>設定>チーム>SVN>SVNインターフェースが「javaHL not avaiable」 libsvn-javaを入れ…