我正在创建一个包含大量照片的网站,每张照片下面都有一个显示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 %>
我希望当用户点击它调用PUT请求的upvote按钮,更新值而不是重定向到同一页面时。我无法弄清楚如何做到这一点。
答案 0 :(得分:0)
首先,您的代码有误:将form_for(@user)
替换为form_for(user)
其次,由于user
对象已存在,因此默认为PUT
。所以你无事可做。
答案 1 :(得分: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
未经测试但应该给你一个起点。