2

我正在尝试开发一个允许用户对链接进行投票的reddit样式的网站。投票功能超出了resources :links支持的基本CRUD,我已经编写了向上/向下操作并将它们链接到视图,但我不知道如何处理路由。有人可以演示我将如何路由到自定义控制器操作?下面附上了我的文件。由于自定义控制器操作的路由

当我加载视图

No route matches {:controller=>"links", :action=>"up"} 

连接控制器https://gist.github.com/1272577

查看https://gist.github.com/1272580

路线我收到此错误https://gist.github.com/1272584

回答

2

您可以扩展这个例子resources映射:

resources :links do 
    member do 
    match :up 
    match :down 
    end 
end 

这些操作必须在LinksController类中可用(与new,create ...相同)。 更多内容Ruby on Rails Guide: Rails Routing

提示:改变实体状态的动作不应该使用GET动词。这是因为搜索漫游器或加速器可能会跟随您的投票链接。 你的链接应该是:

<%= link_to "+", up_link_path, :method => :post, :rel => 'nofollow' %> 

并在控制器应该只修改里面if request.post?您entinty。你应该仍然支持GET,不会导致404s。

+0

我更新了路线文件并运行'耙路线',但此解决方案无法正常工作。我也用'put'替换'post',因为我试图更新属性,但是也没有解决它。 – Dru

+0

我将'post'更改为'put',并且修改了我的视图链接'<%= link_to'+',up_link_url(link),:method =>:put%><%= link.points%>'Thanks for the帮帮我。 – Dru

相关问题