monologue

Railsで"404 - Not Found"などのエラーを出すには?

id:NeoCat:20080531ではroutesを設定してURLの形式をデフォルトから変更してURLを短くしました。 が、分かりやすくなった分、ユーザ自身がいじりやすくなり、存在しないidを伴ってコントローラが呼び出されやすくなりました。(というか自分で何回か「そんな…

routesを記述する

Twitterもどき monologue 作成の続き。 id:NeoCat:20080525:1211709039 でconfig/routes.rb を使ってデフォルトコントローラを指定しましたが、もう少し詳しく指定して、短いURLでリソースにアクセスできるようにしてみます。例えば、これまでユーザの情報ペ…

Follow中のユーザの発言をmixして表示する

ではフォロー中のユーザの発言も、自分のタイムラインにmixして表示できるようにしてみましょう。 コントローラの変更 Userコントローラに以下のhomeメソッドを追加します。ついでに、1ページに表示される発言を最大12件に絞っておきます。また、各ユーザの…

ユーザをFollowするためのインターフェース

Twitterもどき、monologue制作の続き。 id:NeoCat:20080528で作ったフォロー機能を使って、他のユーザをフォローするためのインターフェースをユーザ情報ビューに入れます。app/users/index.rhtml の発言フィールドの部分を次のようにしておきます。既にフォ…

Followerの取得

引き続きTwitterもどき「monologue」の作成。 昨日作ったフォロー中のユーザ(followee)の取得に加えて、逆方向、つまり自分をフォローしているユーザ(follower)を@user.followersで取得できるようにしてみます。まずFollowsテーブルからfollowee_idが自分のi…

Followを実装

id:NeoCat:20080525 から作り始めたTwitterもどき「monologue」に、他のユーザのFollow機能を実装していきます。 まずは、ActiveRecordを使ってユーザ間の関連を取得できるようにします。 テーブルの作成 NeoCat:20080525:1211652175 に書いたように、Follow…

その他の変更

以上に加えて、 ログイン/新規ユーザ追加や各ページにリンクを張る 発言時間を「〜分前」という表記に ユーザアイコンやユーザ情報ページの背景色をusersテーブルに追加。ビューにも反映するコードを追加 ユーザ編集画面の追加 (userコントローラにeditメソ…

DIVの枠線を角丸に

ちょっと見た目を改善しよう、ということで、DIVで作っている枠線を角丸にしてみることにします。 画像を使う方法、CSSとJavaScriptで実現する方法があります。前者は色や丸みを変えたりするのが大変なので、今回は後者の方法を使います(画像よりも重くなり…

共通部分を部分テンプレート化

現状ではユーザ一覧表示やログアウト用のリンクなどがないので、いちいちURLを手で打たないとログアウトできません。 また他のユーザを表示させたあと、ホームに戻るリンクも必要です。単純には <div id="control"> <strong>Welcome, <%= current_user.login %> </strong> <%= link_to "ホーム",</div>…

ユーザ一覧の表示

上記の最新ステータス取得方法を使って、ユーザ一覧を作ります。登録されている全てのユーザを一覧表示してみます(本当は上限を決めてページで分割しないと、ユーザが増えたら大変なことになりますが、後回し。)まず、Userコントローラに以下の list メソ…

ActiveRecordでユーザの最新の発言を取得する

id:NeoCat:20080525に引き続き monologue (Twitterもどき)を作っていきます。 特定のユーザの最新の発言を取得するにはどうすれば良いでしょうか。 まず思いつくのは、そのまま「あるユーザのステータスを日付順に並べたときに、一番最初のもの」と記述する…

デフォルトコントローラの設定

URLにいちいち user を書くのが面倒だなあという気がしてきたし、http://localhost:3000/ でアクセスできるようにしたいところです。 この設定は、config/routes.rb で行います。 もとからある「map.connect '' 〜」のコメントを外し、以下のようにデフォル…

Statusコントローラを書く

Userのindexビューに発言用のフォームを作ったので、これを受理して発言をユーザに追加登録するコントローラを書きましょう。まず、コントローラのひな形をgenerateします。 % script/generate controller statusそして、app/controllers/status_controller.…

flashを表示できるようにする

AdobeなFlashではなくて、ページをリダイレクトしたときにメッセージを伝達する仕組みがflash。 この辺が詳しい。 実は既に flash[:notice] = "You're logged in" とかいった設定がaccountコントローラ内で自動生成されています。 これを表示するようにして…

ユーザ情報のビューを作成

app/views/index.rhtml を編集し、次のようにします。ログインした状態で http://localhost:3000/user/ を見ながら、どんどん書いていきます。発言内容のフォームもまだ機能しませんが、書きます。 <div id="left"> <% if current_user == @user %> <div id="update_status"> <p><% form_for :status, </p></div></div>…

全体レイアウトを作る

先ほど生成されたビューを見てみると、本当にユーザ名しか書かれておらず、〜などの基本的な構造すら入っていないのが分かります。しかし、これからビューを増やしていくことを考えると、いちいち全てのビューに同じことを書いていくのは大変です。そこで、R…

Userコントローラの作成

まずは、ログイン時の謎のポエムをなんとかしましょう。 Userコントローラの自動生成 ユーザの情報を表示するためのコントローラとして、userコントローラというのを作ることにします(userモデルと名前を一致させておきます)。例によってscript/generateで…

発言管理用のテーブル&モデルを作成

ユーザ管理テーブルではいきなり変則的なモデルの作り方をしてしまいましたが、次は「普通」に発言を管理するStatusテーブルを作ってみます。まず、次のコマンドを打ち込んでmodelとmigrationのファイルを自動生成します。 % script/generate model status e…

ユーザ認証用のプラグインの導入とテーブルの生成

普通なら、ここでDBにテーブルを作ってしまうか、テーブル生成用のmigrationを書くのでしょうが、今回はユーザ認証のシステムを作る必要があるため、まずはプラグインを入れておきます。restful_authenticationというのがあるらしいのですが、今回Rails自体…

DB設計

まずはDB設計から。といっても簡単に。Railsなら後から変更も楽に違いない(思い込み)。 ┌──────────┐ ┌────────┐ │User │n⇔n│Follow │ │──────────│ │────────│ │名前、パスワード、 │ │user_id │ │プロフィール、設定、│ │ followee_id │ │などなど… │ …

とりあえず基本設定

作業環境はMac OS X 10.5を使います。rubyはもちろん、なんとrails標準インストール済み(ただしver1.2.6)。 というわけで、さっそく作成開始です。まずは、railsの開発環境を生成。 % rails monologue create create app/controllers create app/helpers cre…

Ruby on Railsで延々作るTwitterもどき

Ruby on Railsで10分で作るTwitterもどきに触発されて、Ruby on RailsでTwitterもどきを作ってみることにしました。 が、実はRailsは初。どう考えても10分じゃ無理なので、ゆっくり作っていくことにします。 作成過程はちょっとずつここで書いていく予定。 …