【发布时间】:2012-01-23 23:41:14
【问题描述】:
感谢收看。我正在学习 Rails 并正在构建一个 Web 应用程序。我试图成为“RESTful”并以这些术语思考。因此,我将我的数据视为一种资源。假设我有一个名为 microposts 的表格和一个“投票”列,其中计算有多少人赞成或反对。我是这样工作的:
在视图中:
<td>
<%= form_for feed_item do |f| %>
<div><%= hidden_field_tag 'todo', 'upvote' %></div>
<div class="action"><%= f.submit "Up" %></div>
<% end %>
</td>
<td>
<%= form_for feed_item do |f| %>
<div><%= hidden_field_tag 'todo', 'downvote' %></div>
<div class="action"><%= f.submit "Down" %></div>
<% end %>
<td>
当用户点击按钮时,它会调用控制器中的“更新”方法。然后,在控制器中,我有这个更新:
def update
@todo = params[:todo]
if @todo == "upvote"
Micropost.find(params[:id]).increment!(:votes)
flash[:success] = "Increase micropost vote"
redirect_to root_path
elsif @todo == "downvote"
Micropost.find(params[:id]).decrement!(:votes)
flash[:success] = "Decrease micropost vote"
redirect_to root_path
else
redirect_to root_path
end
end
我通过一个隐藏字段来了解按下的按钮是“赞成”还是“反对”。所以,如果我想改变任何其他微博属性,我需要越来越多的 if 语句。我不认为我这样做是正确的。更新数据库中的属性或记录的 Rails 方法是什么?
非常感谢!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord