0

我正在制作一个有一堆照片的网站,每张照片下面都有一个按钮,上面写着 Upvote。我希望该按钮提交更新数据库中的字段的 PUT 请求。我目前有这个代码:

<% @users.each do |user| %>
    <%= image_tag user.avatar.url(:thumb) %>
    <% form_for (@user) do |f| %>
    <input name="commit" type="submit" value="Upvote">
    <% end %>
<% end %>

我希望它在用户单击 upvote 按钮时调用 PUT 请求,更新值,然后重定向到同一页面。我无法弄清楚如何做到这一点。

4

2 回答 2

0

首先你的代码是错误的:替换form_for(@user)form_for(user)

其次,由于user对象已经存在,它将默认为PUT. 所以你无事可做。

于 2012-05-23T19:48:40.733 回答
0

如果你想给一个用户投票(不是图片?)然后把它放在你的 user_controller.rb 文件中:

def upvote
  @user = User.find(params[:user])
  @user.upvote
end

在你的 app/models/user.rb

def upvote
  self.votes += 1
  self.save
end

在你的 config/routes.rb

resources :user do
  put :upvote
end

未经测试,但应该给你一个起点。

于 2012-05-23T19:50:06.210 回答