【问题标题】:Routing Error: No route matches [POST] "/topics/post_up_vote_path(post)"路由错误:没有路由匹配 [POST] "/topics/post_up_vote_path(post)"
【发布时间】:2015-07-31 16:57:21
【问题描述】:

我正在为学校分配作业,但我收到了一个我不理解的路由错误。我正在尝试集成投票功能,以允许用户对不同的帖子投赞成票或反对票网站。但是,我不断收到以下错误:

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

【问题讨论】:

  • 请附上触发错误的相关代码?
  • 发布rake routes的输出。这会让我们看到 rails 知道的路线。

标签: ruby-on-rails ruby routes


【解决方案1】:

在您的部分选民 (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

您必须对否决票链接执行相同的操作。

【讨论】:

  • 感谢您指出这一点!一直都是引号.. 现在可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多