ruby-on-rails - 带有 '/' 和 Slugs 的 Rails RESTful 路由

标签 ruby-on-rails rest link-to

我希望做一些类似于 wordpress slug 的事情,其中​​我有一个这样的 URL,同时保持 RESTful 路由:

http://foo.com/blog/2009/12/04/article-title

The reason I am interested in keep RESTFUL routing is that I am unable to use many plugins because I am using custom routes.

I have already done the RESTful appearance with:

map.connect   '/blog/:year/:mon/:day/:slug',
              :controller => 'posts', :action => 'show',
                :year => /\d{4}/, :month => /\d{2}/,
                :day => /\d{2}/, :slug => /.+/,
                :requirements => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/, :slug => /.+/ }

为了编写链接,我必须编写自定义的 link_to 助手来生成正确的 URL。我真的很想让这个 RESTful 并让 link_to post_path( @post ) 产生上面的 URL 和 link_to edit_post_path(@post) ...article-title/edit

我也有 :has_many => [:comments] 并且我希望它也能工作。我尝试过的 link_to 如下所示:
 'posts', :action => 'show', :year => recent_post.datetime.year.to_s,
            :month => sprintf('%.2d', recent_post.datetime.mon.to_i),
            :day => sprintf('%.2d', recent_post.datetime.mday.to_i),
            :slug => recent_post.slug %>

并产生这个(这不是我想要的):

http://foo.com/posts/show?day=30&month=11&slug=welcome-to-support-skydivers&year=2009

我不确定我做错了什么。甚至有可能做到这一点吗?

最佳答案

我认为它不起作用,因为您没有使用自定义路线。我一直这样做。我只是设置了一个简单的自定义路由:

map.present_page '/blog/:year/:month/:day/:slug',
          :controller => 'posts', :action => 'show'

那么你应该能够做到:
present_page_path(:year => 2009, 
                  :month => "December", 
                  :day => "13", 
                  :slug => "just-an-example")

您获得查询字符串的原因很可能是因为 rails 没有因为任何原因连接到您的路线。使用命名路由明确告诉 rails 使用该路由。让我知道这是否为您解决了问题!

关于ruby-on-rails - 带有 '/' 和 Slugs 的 Rails RESTful 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871267/

相关文章:

Java Jersey 声明式超链接 @Ref 注解的使用

java - 来自客户端的超时 web 服务调用

ruby-on-rails - Rails link_to 带路径和 url_options

javascript - .js.erb 文件中的 link_to

ruby-on-rails - 没有要加载的文件——RMagick.rb Rails,Ubuntu

css - Rails 字体未在移动设备上加载但显示在桌面上

azure - 有没有办法从 Azure Runbook 进行 API 调用?

javascript - 使用 rails3 (link_to_remote) 和基本 javascript 的 link_to 语法在 rails3 应用程序中不起作用?

javascript - 谷歌图表在第一次请求时不显示,但仅在第二次请求时显示

ruby-on-rails - Rails ActiveRecord 模型链表