2014年7月9日水曜日

6-6 イベントの編集・削除機能を作る

 イベントの編集・削除機能とそれに関連するリンクを作成する。

  • イベント詳細ページに編集リンクを追加
  • 編集をクリックすると編集フォームに移る
  • 間違った入力にはエラーを表示する
  • 正しく入力されていると更新
  • イベント削除のリンクを追加
  • イベント作成者にだけ表示する
  • 削除をクリックすると確認ダイアログが出て、OKすると削除される

イベント編集機能を作る

まず編集ボタン。event/show.html.erbにp197の通り追記。
   <% if @event.created_by?(current_user) %>
   <% link_to 'イベントを編集する', edit_event_path(@event), class: 'btn btn-info btn-lg btn-block' %>
  <% end %>
 特に上の部分で、イベント作成者にのみ編集ボタンを表示させている。created_by?についてはEventクラスmodels/event.rbで定義する。
  def created_by?(user)
  return false unless user
  owner_id == user.owner_id
  end
 こんなのを追記しましたが、内容がイマイチわからない。
 returnの行でuserが空ならfalseを戻り値にして返す。
unless user
  return false
end
と同じ意味みたい。
 owner_id〜では、イベント作者のowner_idとログインユーザーのowner_idが同じかをチェックしている?演算子の説明とかちょっとだけしてほしい。辛い。

 EventsControllerにedit/updateアクションを追加。
  def edit
    @event = current_user.created_events.find(params[:id])
  end
  def update
    @event = current_user.created_events.find(params[:id])
    if @event.update(event_params)
      redirect_to @event, notice: '更新しました'
    else
      render :edit
    end
  end
 編集時に問題があると編集ページがリロードされちゃうのかな?

未完。

0 件のコメント:

コメントを投稿