繁体   English   中英

未定义的方法`post_up_vote_path'

[英]undefined method `post_up_vote_path'

我试图在我的应用程序中提出upvote / downvote方法,但遇到无方法错误。

这是我的选民表格:

<div>
  <div class= 'pull-left'>
    <div><%= link_to " ", post_up_vote_path(post), class: 'glyphicon plyphicon-chevron-up', method: :post %></div>
    <div><strong><%= post.points %></strong></div>
    <div><%= link_to " ", post_down_vote_path(post), class: 'glyphicon plyphicon-chevron-up', method: :post %></div>
 </div>

这是我的路线:

App::Application.routes.draw do

devise_for :users
resources :users

resources :topics do
resources :posts, except: [:index] do
  resources :comments, only: [:create, :destroy]
  post '/up-vote' => 'votes#post_up_vote', as: :up_vote
  post '/down-vote' => 'votes#post_down_vote', as: :down_vote
 end
end
get 'about' => 'welcome#about'
root to: 'welcome#index'
end

这是我的部分通话:

<%= render partial: 'votes/voter', locals: { post: post } %>

现在,我认为我的部分呼叫或选民部分没有任何问题,因为在我尝试路由之前,一切正常。

首先,您需要稍微改变一下路线。

resources :posts, except: [:index] do
  resources :comments, only: [:create, :destroy]

  post 'upvote', on: :member
  post 'downvote', on: :member
 end

这些是成员路线而不是集合路线的原因是它们适用于帖子集合的特定成员...单个Post

然后,您将要运行命令,在终端中rake routes ,以查看适当的路径方法。 应该是这样的

upvote_post_path(:id)

这要求传入一个对象..so在您的视图中,您将像当前一样使用它。

upvote_post_path(post)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM