加分題 扣分按鈕

Published on:

參考 初級練習 3-9 讓大家可以投票 https://fullstack.xinshengdaxue.com/posts/48

步驟一 創 “扣分” 按钮 ,修改 app/views/topics/index.html.erb
步驟二 加一个新的 controller action 来投票 “减分 (此時出現個坑)
app/controllers/topics_controller.rb
def devote
@topic = Topic.find(params[:id])
@topic.votes.last.destroy
redirect_to(topics_path)
end
(坑1, @topic.votes.last.destroy 思考方法:減分方法是destroy,但是要怎麼減,)

步驟三 给投票扣分操作加一个 route 在config/routes.rb 裡
post 'upvote'

  • post 'defvote'

到這裡回到 http://localhost:3000 然后試試看扣分按鈕是否成功
接著會發現當票數變成0票的時候,再按扣分鈕畫面會報錯 要怎麼解決 ?
這裡就又有一個坑
到app/controllers/topics_controller.rb
將@topic.votes.last.destroy 修改為
@topic.votes.last.destroy if @topic.votes.count > 0
(用初級練習的2-1 基础 Rubyconditional(条件式)去理解)
@topic.votes.count 是按照投票总数从小到大排列

Comments

comments powered by Disqus