【发布时间】:2016-03-20 08:41:57
【问题描述】:
我是 ruby on rails 的新手。
我使用 match ":controller(/:action(/:id))", :via => [:GET, :PUT] 作为路由系统。
我正在使用 acts_as_votable gem 来设置帖子投票系统。
目前我在 posts#show 页面。我有两个链接,一个是 upvote,另一个是 downvote。
在我点击 upvote 后,我想点击 posts#upvote 操作,然后再次重定向到 posts#show(同一页面)页面。
为此,我需要在投票操作中传递 :id(post) 的参数。
如果我使用
@post = Post.find(params[:id])
在 posts#vote 中,它会引发错误,因为我们没有将 :id 传递给 params 哈希。
当我单击 upvote 按钮时,如何将 :id(post) 传递给 params 哈希,以消除我遇到的错误。
这是 posts#upvote 操作代码。
def upvote
@post = Post.find(params[:id])
@post.upvote_from User.find(session[:user_id])
redirect_to(:controller => "posts", :action => "show", :id => @post.id)
end
这是 posts#show 页面中的链接标签。
<%= link_to({:controller => "posts", :action => "upvote"}) do %>
<span>Like</span>
<span>(<%= @post.get_upvotes.size %>)</span>
<% end %>
请帮助我。提前致谢
【问题讨论】:
-
localhost:3000/posts/1其中1是您的:id -
请编辑您的问题以包含您拨打
link_to的查看代码。 -
如果你点击
/posts/vote/1会发生什么?
标签: ruby-on-rails ruby ruby-on-rails-4 routing params