New-Village

月間ブログ。だいたい1カ月に1回は更新しているようです。

Rails: リンクを押すとDBを更新

ここ暫く取り組んでいるRSSリーダー作りの記事です。

今回は、記事を既読にする、つまり、read_flgカラムを 0 → 1にアップデートする処理を実装しました。最終的にはこんな画面になっています。既読にするボタンを押すと表示から消えます。

f:id:New-Village:20140819192854p:plain

 

■ ブランチの作成

今回はデータベースの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