用户单击按钮即可投票。这应该更新@ item.upvotes。
这是怎么回事?以下是我想到的选项。我对正确的划分并不是非常熟悉,我也希望能够了解这背后的原因。
答案 0 :(得分:3)
正确的方法是让upvote按钮(视图)通过路由到正确的方法来调用控制器。在控制器方法中,您告诉模型更新字段。这是MVC原则。
Rails中的模型通常只包含验证,关系等。更新字段显然是控制器的工作。
我现在不再使用我的ruby了,因为我现在正在使用java,但控制器应该看起来像这样:
class ItemsController
def upvote
Items.increment_counter(:upvote, params[:id])
end
在视图中,您有一个按钮(通过表单或link_to)发布id以表示“/ upvote”操作:
<%= link_to "upvote", upvote_path(:id => @item.id) %>
在您的路线文件中,您将其发送到Items#upvote。
match "/upvote" => "items#upvote"
答案 1 :(得分:-2)