Rails: リンクを押すとDBを更新
ここ暫く取り組んでいるRSSリーダー作りの記事です。
今回は、記事を既読にする、つまり、read_flgカラムを 0 → 1にアップデートする処理を実装しました。最終的にはこんな画面になっています。既読にするボタンを押すと表示から消えます。
■ ブランチの作成
今回はデータベースのupdate機能を実装するので、"update"というブランチを作成します。
~/workspace/xapp8(master)$ git checkout -b "update"
■ データベースの更新
アコーディオンを開いたら既読状態になるようにしたかったのですが…、Bootstrap3のアコーディオンが開いた状態をキャッチしてupdateすることが、私のスキルでは難しかったので、既読にするボタンを付けてしまいました。
まずは、ビューに既読にするボタンを追加するコード。
app/views/mains/_main.html.erb
<div class="panel-heading">
<h4 class="panel-title"><%= link_to main.article.title, main.article.url, :target => "_blank" %></h4>
<a href='<%= "#"+main.id.to_s %>' data-toggle="collapse" data-parent="#accordion" style="float">[詳細]</a>
<%= link_to "既読にする", main_path(main.id), :method => "PATCH", :style => "float:right"%>
</div>
...
次に、既読にするボタンが押された場合に実行されるコントローラーのupdateメッソドのコード。
app/controllers/mains_controller.rb
# PATCH/PUT /mains/1
# PATCH/PUT /mains/1.json
def update
main = Main.find(params[:id])
main.read_flg = 1
main.save
redirect_to mains_path
end
■ 終わり
GithubとHerokuにアップロードして終わります。
~/workspace/xapp8(update*)$ git add .
~/workspace/xapp8(update)$ git commit -m"既読ボタンの実装"
~/workspace/xapp8(update)$ git checkout master
~/workspace/xapp8(master)$ git merge update
~/workspace/xapp8(master)$ git push
~/workspace/xapp8(master)$ git push heroku