2014年7月9日水曜日

6-5 イベントの閲覧機能を作る

 今度は下記を実装。
  • イベント登録後、イベント詳細ページに移る
  • トップページに未開催のイベントを表示する
  • イベント一覧から詳細ページに移れる

イベント詳細ページの作成

before_action :authenticate, except: :show
def show
@event = Event.find(params[:id])
end
まずはこれだけEventコントローラに追加した。:idの入ったurlからこれを引数として持てこれる。ルーティングはresourcesでOKと。
 イベント詳細ページはログインしていなくても確認できるようにするため、before_actionにexcept: :showを追記してログイン状態をチェックしないようにしている。
 ビューにはイベント内容と、作成ユーザーを表示します。p193の通りファイル作成。
 models/event.rbに下記を追記。
  belongs_to :owner, class_name: 'User'
 ownerについては後で設定するらしい。だからきっとここでのhas_manyの
設定も後回し。
 これでイベント内容が表示されるというけど・・・あ、表示された。すごい。Twitterで使っているIDとプロフィール画像も表示された。なんか楽しい。
 それにしても、ビューを書くセンスってhtmlとcss知っていることが前提っぽいからつらいなー。そこもRubyも知らないのに、Railsって相当誤った選択じゃないか。進めた奴を恨むよ。

イベント一覧ページの作成

トップページにイベント一覧を表示させる。なんか久しぶりにトップページにきました。welcome/index.html.erbを下記の通り書き換え。
<div class="page-header">
  <h1>イベント一覧</h1>
</div>
<div class="list-group">
  <% @event.each do |event| %>
    <%= link_to(event, class: 'list-group-item') do %>
      <h4 class="list-group-item-heading">
        <%= event.name %>
      </h4>
      <p class="list-group-item-text">
        <%= event.start_time.strftime('%Y/&m/%d %H:%M') %> - <%= event.end_time.strftime('%Y/&m/%d %H:%M') %>
      </p>
    <% end %>
  <% end %>
</div>
 @eventについて未定義なので取得処理の実装をする。未開催のイベントを開催時間の昇順で取得する。設定はwelcomeコントローラ。
class WelcomeController < ApplicationController
  def index
  @event = Event.where('start_time > ?', Time.zone.now).order(:start_time)
  end
end
 whereとかorderとかってsqlのクエリでさーね。なんとなくわかるけど詳しい書式がわからん。

参考:

 こんなか。
 お、トップページに一覧が出た。BootStrapって便利そうだな。前にも書いたっけ。無いセンスでCSS一生懸命作るより、用意されたものを組み合わせる方が素人には嬉しいね。参考にできるサイトもたくさんありそう。

参考:

0 件のコメント:

コメントを投稿