Routing Error: No route matches [POST] "/topics/post_up_vote_path(post)"

Routing Error: No route matches [POST] "/topics/post_up_vote_path(post)"

我正在为学校做作业,我收到了一个我不明白的路由错误。我正在尝试集成一个投票功能,让用户可以对各种posts 在网站上。但是,我不断收到以下错误:

Routing Error

No route matches [POST] "/topics/post_up_vote_path(post)"

我最近更新了我的 routes.rb 文件以实现浅层嵌套:

Rails.application.routes.draw do
  devise_for :users
  resources :users, only: [:update]

  resources :topics do
    resources :posts, except: [:index]
  end

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

    post '/up-vote' => 'votes#up_vote', as: :up_vote
    post '/down-vote' => 'votes#down_vote', as: :down_vote
  end

  get 'about' => 'welcome#about'

  root to: 'welcome#index'
end

现在 up_votes 和 down_votes 的路线如下所示:

post_up_vote_path POST /posts/:post_id/up-vote(.:format) votes#up_vote
post_down_vote_path POST /posts/:post_id/down-vote(.:format) votes#down_vote

从上面收到的错误来看,我的应用似乎在搜索 /topics/post_up_vote_path(post) 而它应该搜索 /posts/:post_id/up-vote 。我有点卡在这一点上,不确定如何让事情正确路由..

这里是与此项目关联的相关 GitHub 分支,以供进一步参考其他文件:

https://github.com/jlquaccia/Bloccit/tree/checkpoint-49-voting

在您的选民部分 (app/views/votes/_voter.html.erb) 中,您将字符串 'post_up_vote_path(post)' 作为 link_to 的 url 参数传递。您只需要去掉引号,将 link_to 更改为:

link_to " ", post_up_vote_path(post), class: 'glyphicon glyphicon-chevron-up', method: :post

你必须对反对票做同样的事情 link。