【问题标题】:Custom Routing in RailsRails 中的自定义路由
【发布时间】:2011-06-05 11:43:35
【问题描述】:

我已经环顾了一段时间,但我不确定如何最好地描述我对谷歌的请求,所以我想我会在这里问;)

在rails中,我知道当你嵌套restful路线时,你通常会得到类似的东西:

http://localhost/categories/1/articles/2

如果你想要更有意义的东西,你可以使用 slugs 或 friendly_id 来获得类似的东西

http://localhost/categories/all-your-needs/articles/rock-out-with-this-article

(假设您有唯一的名称)。

我的问题是,我怎样才能从 url 重写器中删除控制器,这样你就可以得到类似的东西:

http://localhost/all-your-needs/rock-out-with-this-article

这可能吗?

【问题讨论】:

    标签: ruby-on-rails url-routing


    【解决方案1】:

    是的。你可以使用这样的东西:

    Rails 2:

    map.show_article ':category/:article', :controller => "articles", :action => "show"
    

    编辑:

    好的。这里有其他 REST 操作的 url:

    map.edit_article ':category/:article/edit', :controller => "articles", :action => "edit".
    

    对于更新添加:conditions => { :method => :post } 到上一个。

    对于删除,将第一个与:conditions => { :method => :delete } 一起使用。

    对于新建和创建,您可以使用:

    map.new_article ':category/new', :controller => "articles", :action => "new"
    

    创建相同但使用:conditions => { :method => :post }。希望能帮到你!

    【讨论】:

    • 实际上,Rolpege 提供的内容确实有效……但仅适用于一个动作(表演)。如何扩展它以包含所有操作(或嵌套更多控制器)?
    • 我的错,对不起Rolpege,是我误会了!
    • 但请注意将此行放在您的 routes.rb 文件的底部 => 此声明可能会被太多路由获取:例如 foo/bar
    • @apneadiving:哈哈,没问题。 @Maximus:编辑答案以添加其他 REST 操作。
    • 不确定我是否做错了,但使用 :method => :post 对更新不起作用(你必须使用 :method => :put 代替)
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2019-07-26
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多