Javascript 路由到控制器中的自定义操作

Javascript 路由到控制器中的自定义操作,javascript,ruby-on-rails,Javascript,Ruby On Rails,我正在尝试添加ajax,它可以在单击div时呈现部分内容 此链接: <h1 id="comments_viewall"><%= link_to "View All", videos_update_comments_path, remote: true%></h1> 路线如下: get 'videos/update_comments' 但是,我得到了这个错误: GET http://localhost:3000/videos/update_comments

我正在尝试添加ajax,它可以在单击div时呈现部分内容

此链接:

<h1 id="comments_viewall"><%= link_to "View All", videos_update_comments_path, remote: true%></h1>
路线如下:

get 'videos/update_comments'
但是,我得到了这个错误:

GET http://localhost:3000/videos/update_comments 404 (Not Found) 

Started GET "/videos/update_comments" for 127.0.0.1 at 2014-05-05 13:49:02 -0400
Processing by VideosController#show as JS
  Parameters: {"id"=>"update_comments"}
  User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
 in show
  Video Load (0.1ms)  SELECT "videos".* FROM "videos" WHERE "videos"."id" = ? LIMIT 1  [["id", "update_comments"]]
 Completed 404 Not Found in 2ms

ActiveRecord::RecordNotFound (Couldn't find Video with id=update_comments):
  app/controllers/videos_controller.rb:94:in `show'

我按照一堆堆栈溢出问题告诉我的方法进行操作,但仍然不起作用。

移动
获取
显示
视频资源定义的
路径上方的“视频/更新注释”

例如:

get 'videos/update_comments'
resources :videos
与当前一样,当您对
视频/update\u评论执行GET请求时,Rails会从routes.rb中找到第一个匹配项,并将请求路由到那里。因此,它匹配
videos/:id
route并将请求路由到
videoscocontroller\show
action,而不是
videoscocontroller\update\u comments

您可以在生成的日志中清楚地看到它

Started GET "/videos/update_comments" for 127.0.0.1 at 2014-05-05 13:49:02 -0400
Processing by VideosController#show as JS
通过将
update\u comments
路由移动到
show
路由之前,每当发出
videos/update\u comments
的GET请求时,第一个匹配将是路由中的
GET'videos/update\u comments'
,请求将被定向到
videoscocontroller\update\u comments

更新

您还可以按照@Addicted在注释中的建议,在
集合中定义
更新\u注释
路线,前提是您已经使用
资源:视频定义了路线

  resources :videos do
    collection do
      get 'update_comments'
    end
  end

发布您的
show
方法和
rake routes
输出。@vicli我的回答解决了您的问题吗?让我知道结果和查询(如果有的话)。既然视频控制器存在,并且相应的路由似乎也存在,那么为什么不在集合下添加更新注释呢?这是一个不错的选择。我只是举了一个一般性的例子,因为OP没有分享路由的实际定义。
  resources :videos do
    collection do
      get 'update_comments'
    end
  end