【发布时间】:2024-01-03 01:24:01
【问题描述】:
我正在为 ruby on rails 使用 Thumb_Up gem。 https://github.com/brady8/thumbs_up
我希望用户能够对帖子进行投票。 但是,我无法弄清楚如何允许用户单击每个帖子旁边的按钮并向数据库添加投票。
我可以通过执行以下操作在 Rails 控制台中实现这一点:
u=User.first
m=Micropost.first
u.vote_for(m)
但是,如何在视图中单击按钮时发生这种情况。我假设我必须使用 ajax,但我怎么知道我需要发布到哪个 url 才能执行此操作?
任何帮助将不胜感激。
更新:
非常感谢您的帮助!我仍然对下面的代码有问题。
这是我的路线.rb
resources :microposts do
post :vote, :on => :member
end
查看:
<%= link_to('vote for this post!', vote_micropost_path(@micropost), :method => :post) %>
控制器:
def vote
@micropost = Micropost.find(params[:id])
current_user.vote_for @micropost
# This assumes you'll only call it via AJAX.
# If your ajax call doesn't return "ok", then you know something went wrong
render :text => 'ok', :layout => false
end
但是,我仍然收到此错误: 没有路线匹配 {:controller=>"microposts", :id=>#, :action=>"vote"}
有人知道为什么路线匹配不正确吗?
【问题讨论】:
-
是的,这更清楚了。在您看来,@micropost 实际上并未设置为 Micropost 记录。无论渲染该视图的什么动作都需要设置@micropost,就像 vote 动作正在做的那样。
标签: ruby-on-rails rubygems gem vote-up-buttons