路由自定义控制器操作

时间:2011-10-08 17:28:07

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller routing

我正在尝试开发一个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

1 个答案:

答案 0 :(得分: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?内修改你的内容。您仍然应该支持GET不会导致404.