增量不在轨道中工作

时间:2013-12-03 02:00:08

标签: ruby-on-rails

我有一个简单的应用程序,我希望上传的音乐具有“喜欢”功能,可以跟踪喜欢的数量。

音乐控制器:

def increment
 @music  = @Music.find(params[:music_id])
 @music.update_attribute(:rating, music.rating = music.rating+1)
 flash[:notice] = "Thanks for rating"
end

这就是我在视图中调用它的方式:

<%= link_to "Like This Song", increase_rating_path(music.id) %>

这是我的路线

match '/increment/:music_id', to: 'musics#increment', :as => 'increase_rating' , via: 'post'

这似乎是一件非常简单的事情,但我无法弄清楚为什么它不起作用,

任何建议都会非常感谢

2 个答案:

答案 0 :(得分:4)

首先。模型类名以大写字符开头。

 @music = Music.find(params[:music_id])

二。局部变量'音乐'在范围内不存在。 使用在'@music'上面分配的实例变量而不是'music'

 @music.rating = @music.rating + 1

第三。您无需指定'music.rating = music.rating + 1',Reference

@model.update_attribute(:column, :value)

只需使用值

@music.update_attribute(:rating, @music.rating + 1)

最后。

def increment
   @music  = Music.find(params[:music_id])
   @music.update_attribute(:rating, @music.rating + 1)
   flash[:notice] = "Thanks for rating"
end

答案 1 :(得分:0)

你可以使用增量!方法增加计数。 increment!

def increment
 @music  = Music.find(params[:music_id])
 @music.increment!(:rating, by = 1)
 flash[:notice] = "Thanks for rating"
end