Ruby on Rails 13章投稿と削除

Ruby on Rails 13章投稿と削除をやりました。

<概要>
●マイクロポストの追加、削除IF

●Homeにマイクロポストの一覧を追加する

*****

●マイクロポストの追加、削除IF
・他ページから投稿がPOSTされてくるので、create / destroyだけ定義。
→routes.rbのresourcesを only: [:create, :destroy]で定義。

・ログイン必須化
ユーザコントローラから、マイクロポストコントローラの両方の親である
アプリケーションコントローラに移す。

・Homeをログイン後/ログイン前にわける
投稿用のフォームはログイン後用として用意する。

●Homeにマイクロポストの一覧を追加する
Homeには(ログイン済ならば)ユーザのプロフィールと投稿欄が出るようにして
ここにマイクロポストを追加する。

・ポイントになるのは、ログインユーザのポストをとってくるということ。
・フォローしているユーザをとってくるという伏線があるので、
feedの実装はself.micropostsみたいな抜き方ではなくて、ユーザID指定でとる。

サンプルをみても、画面にドローするものは@XXXXでコントローラのインスタンスに
ぶっこんでいっている。

feed_itemは、Micropostであるので、_micropost.html.erbが自動でマッピングされる。
おー、これはいい。

●microposts_contollerのcreateのsave失敗で
@feed_items = []はダサい

microposts_contollerにとって、
成功メッセージと、
homeへのリダイレクトは自発的なものなのでいい。

でもPOSTされてきてもいないhomeのレイアウトを
micropost_controllerが知っているべきではない。
投稿データには関係ない、ただの呼び出し元の都合であるから、そこまで
このcontrollerが手を出すのは越権行為のはず。

<対策>
<% if @feed_items != nil && @feed_items.any? %>
に_feed.html.erbを変える。

●マイクロポストの削除条件
deleteするのは自分という前提なので、
ログインユーザのuserモデル→micriopostsの一覧の中から、
deleteのパラメータになっているidを探して削除。

ログインして他ユーザの投稿ID、未ログイン状態でも失敗する。

コメントを残す

メールアドレスが公開されることはありません。