【问题标题】:Sinatra & Rails 3 routes issueSinatra & Rails 3 路线问题
【发布时间】:2011-05-18 19:35:37
【问题描述】:

我刚刚在我的 rails (v3.0.1) 应用程序中设置了 Sinatra v1.1.0。但我不能调用任何深度超过 1 级的路由,这意味着这有效 - http://localhost/customer/3

但这个不起作用 - http://localhost/customer/3/edit 我收到“路由错误”

这是 Sinatra 对象

class CustomerApp < Sinatra::Base

  # this works
  get "/customer/:id" do
    "Hello Customer"
  end

  # this does NOT work
  get "/customer/:id/edit" do
    "Hello Customer"
  end

end

这就是我在 rails routes.rb 文件中的内容 -

match '/customer/(:string)' => CustomerApp 

我猜我需要在路由文件中添加一些魔法?可能是什么问题?

【问题讨论】:

  • routes.rb 文件中有大量示例被注释掉了。

标签: ruby-on-rails sinatra


【解决方案1】:

在你的路由文件中,你可以这样指定映射:

mount CustomerApp, :at => '/customer'

现在,在您的 sinatra 应用程序中,您可以在没有 /customer 部分的情况下指定您的路线。 不要忘记在某处要求您的 sinatra 应用程序(您可以直接在路由文件中进行)

【讨论】:

    【解决方案2】:

    您需要添加一个额外的路由来匹配不同的 URL:

    match '/customer/(:string)/edit' => CustomerApp
    

    【讨论】:

    • 谢谢,这太奇怪了,这意味着你需要复制 URL,这不好。
    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多