【问题标题】:Rails 3 "No Route Matches" error With Custom Named Route自定义命名路由的 Rails 3“无路由匹配”错误
【发布时间】:2012-02-04 01:16:07
【问题描述】:

我的 routes.rb 中有这条自定义路线

match '/businesses/:permalink', :to => 'businesses#show', :as => :business_permalink
resources :businesses

我已经构建了一个这样的链接:

<%= link_to business.name, business_permalink_path %>

但是,每当我访问带有该链接的页面时,都会收到此错误:

No route matches {:controller=>"businesses", :action=>"show"}

我尝试颠倒路线顺序:

resources :businesses
match '/businesses/:permalink', :to => 'businesses#show', :as => :business_permalink

这不起作用。如果我将链接更改为此链接,它会起作用:

显示操作存在并在文件 controllers/businesses_controller.rb 中定义。我想使用我的永久链接创建自定义 URL。

我是 Rails 的新手,我知道我只是缺少一些东西。我错过了什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    试试这个:

    <%= link_to business.name, business_permalink_path(business.permalink) %>
    

    【讨论】:

    • 简而言之,如果您使用带有动态段的命名路由,则在使用_path_url 时必须提供something捷径。我自己被这个绊倒了几分钟,令人沮丧。
    【解决方案2】:

    试试这个:

    match '/businesses/:permalink' => 'businesses#show', :as => :business_permalink
    

    更多:http://railscasts.com/episodes/203-routing-in-rails-3

    【讨论】:

    • 这仍然会失败,因为它只是使用较新的语法。命名路由路径助手需要动态段的参数。
    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多