我在轨道上使用Ruby_的Thumb_Up宝石。 https://github.com/brady8/thumbs_up如何使用Rails 3 gem方法更新数据库模型?
我希望用户能够对帖子投票。 但是,我无法弄清楚我如何允许用户单击每个帖子旁边的按钮并向数据库添加投票。
我能得到这个在轨控制台上执行,通过执行以下操作:
u=User.first
m=Micropost.first
u.vote_for(m)
但是,我怎么能得到当单击视图按钮,这样的事情发生。我假设我将不得不使用ajax,但是如何知道我需要发布的url以使此操作发生?
任何帮助将不胜感激。
更新:
感谢这么多的帮助!我仍然遇到下面的代码有问题。
这里是我的routes.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_操作正在做的一样。 – bioneuralnet 2011-04-14 15:33:59