我有一个简单的应用程序,我希望上传的音乐具有“喜欢”功能,可以跟踪喜欢的数量。
音乐控制器:
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'
这似乎是一件非常简单的事情,但我无法弄清楚为什么它不起作用,
任何建议都会非常感谢
答案 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