【问题标题】:Modify behavior of named route in Rails 3在 Rails 3 中修改命名路由的行为
【发布时间】:2011-03-16 04:32:54
【问题描述】:

在我写的 Rails 博客中,我希望帖子的“显示”路径始终采用以下形式:

/年/月/日/标题

目前我可以使用通用匹配来完成此操作:

match "/:year/:month/:day/:url_title", :to => "posts#show", :constraints => {:year => /(19|20)\d\d/, :month => /[01]?\d/, :day => /[0-3]?\d/}

我的模型负责将标题转换为连字符分隔的字符串。

但是,我需要一种方法来将此行为集成到资源路由中,以便我的 post_path 方法能够继续工作 - 最好只传入一个 post 对象。

我想知道是否有某种方法可以使用 :as 选项来设置路线,或者使用块来设置。

【问题讨论】:

    标签: ruby-on-rails ruby routing


    【解决方案1】:

    您自己回答了这个问题,只需使用:as => :post 然后post_path(@post) 就可以了!

    【讨论】:

    • 哦!好吧,我现在实际上正在尝试,但得到一个错误,即没有路由与这些选项匹配,即使它正确应用了正确的字段。我想知道我的正则表达式是否有错误。
    • 是的。如果我完全删除约束, post_path(@post) 也不起作用,这看起来很奇怪。
    • 你能用:as发布你的比赛路线吗?
    • match '/:year/:month/:day/:url_title' => "posts#show", :constraints => {:year => /(19|20)\d\d /, :month => /[01]?\d/, :day => /[0-3]?\d/, :url_title => /.*/}, :as => 'post'
    • Errr,抱歉,这实际上不适用于“as”。抱歉,第一次删除后一定是点击了刷新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2011-08-29
    • 2011-10-10
    • 2011-05-12
    相关资源
    最近更新 更多