自定义控制器操作的路由

发布于 2024-12-09 02:51:24 字数 584 浏览 0 评论 0原文

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

I'm trying develop a reddit style site which allows users to vote on links. The voting feature goes beyond basic CRUD supported by resources :links I've written the up/down actions and linked them to the view but I'm not sure how to handle routing. Could someone demonstrate how I would route to custom controller actions? I've attached my files below. Thanks

I receive this error when I load the view

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

Links Controller https://gist.github.com/1272577

View https://gist.github.com/1272580

Routes https://gist.github.com/1272584

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅沫记忆 2024-12-16 02:51:24

您可以使用以下示例扩展资源映射:

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

这些操作必须在 LinksController 类中可用(与 new、create... 相同)。
更多内容请参见 Ruby on Rails 指南:Rails 路由

提示:更改实体状态的操作不应使用 GET 动词。这是因为搜索机器人或加速器可能会跟踪您的投票链接。
您的链接应该是:

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

并且在控制器中应该仅在 if request.post? 内修改您的实体。您仍然应该支持 GET 以免导致 404。

You can extend resources mapping with this example:

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

These actions must be available in LinksController class (same as new, create...).
More in Ruby on Rails Guide: Rails Routing.

Tip: actions changing state of entity should not use GET verb. This is because search bots or accelerator may follow your voting links.
You link should be:

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

And in controller should modify your entinty only inside if request.post?. You should still support GET to not cause 404s.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文