【问题标题】:problem in routes路线问题
【发布时间】:2010-09-17 12:42:36
【问题描述】:

我想将 RoR 中的默认路由更改为我想要的: 考虑以下示例...

:controller/:action/:id

它将在浏览器中为您提供如下路线: http://localhost:3000/controller/action/id

现在我想把它改成...

http://localhost:3000/this-is-what-i-want/id

我们可以得到控制器和动作的别名...

resources :controller, :as => "my-custom-name"

如果你想拥有动作的别名,那么

resources :controller, :path_names => { :action => 'my-custome-name-1', :action => 'my-custome-name-2' }

但我想立即更改控制器和操作...如果您注意到上述内容 http://localhost:3000/this-is-what-i-want/id 问题中的路径...

需要帮助... 提前谢谢...

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    你需要一个命名路由。

    在 Rails2 中:

    map.a_name 'this-is-what-i-want/:id', :controller => 'controller_name', :action => 'action_name'
    

    在 Rails3 中:

    match 'this-is-what-i-want/:id' => 'controller_name#action_name'
    

    【讨论】:

    • 现在如果我想要:map.a_name 'this-is-what-i-want/dynamic-name/:id', :controller => 'controller_name', :action => 'action_name '...我要如何在 rails 中设置“动态名称”的链接...?
    • 然后听从 Jesse Wolgamott 的建议,使用休息路线
    【解决方案2】:

    你想使用 Rest 路由,而不是控制器/动作

    我将使用“balls”而不是“this-is-what-i-want”

    resources :balls
    

    然后,当您链接到球时,请执行link_to(ball.name, ball)。

    这将为您提供 http://localhost:3000/balls/45

    的链接

    这个rails rest cheatsheet 是一个好的开始。

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2011-08-29
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多