为什么远程发布和远程更新帖子时会出现“无路由”错误?

时间:2011-10-20 18:20:49

标签: ruby-on-rails ruby-on-rails-3 error-handling

一些背景:我有一个帖子控制器,用于用户创建或更新帖子。在帖子表单中,用户开始撰写他们的帖子。此帖子可以保存为草稿(然后表单切换功能以提交到控制器的“更新”操作),然后发布到页面,或直接发布到页面。

这些表单远程发布到页面,该页面附加一个包含帖子的表格。

目前,我遇到了一个问题:提交表单会发生故障,因为在附加表格后,我收到错误“ActionView :: Template :: Error(No route matches {:action =>”vote“,:controller =>“posts”,:post_id => 245,:positive => true})“。这指的是帖子视图中的一行代码:

 <%= link_to (image_tag("icons/upvote.png", :height => "15px")), vote_post_path(:post_id => post.id, :positive => true), :remote => true %>

我应该提一下,将帖子附加到表中是通过使用保持控制器可用的@post变量来完成的。

现在奇怪的是,只有在将帖子直接提交到“创建”操作并尝试使用帖子附加表格时才会发生此错误。当保存的草稿提交到“更新”操作并附加到表格上时,不会发生这种情况。

有没有人对这是为什么有任何建议?我可以在相关的地方提供更多代码。

编辑:我的路线文件的相关部分:

 resources :posts do
   member do
     get :vote
   end
 end

2 个答案:

答案 0 :(得分:2)

问题在于您将“投票”操作视为成员操作,而不是集合操作。切换到:

 resources :posts do

   collection do
      get :vote 

   end
 end

答案 1 :(得分:0)

试试这个,看看会发生什么:

resources :posts do
  resources :votes 
end