【问题标题】:Routing error on Rails 3Rails 3上的路由错误
【发布时间】:2011-03-04 15:53:40
【问题描述】:

我正在处理个人资料页面,所以配置是这样的:

路线.rb => match "user/:login(*path)" => 'users#profile', :as => :profile 耙路线 => 配置文件 /user/:login(*path)(.:format) {:action=>"profile", :controller=>"users"} 在控制台上 > Rails.application.routes.recognize_path("/user/example/whatever") => {:action=>"profile", :login=>"example", :controller=>"users", :path=>"/whatever"}

我在 UsersControllers 中有一个配置文件操作。 但是当我使用

&lt%= link_to user.name, profile_path(user.login) %>

在视图中我得到了错误

没有路由匹配 {:login=>"example", :controller=>"users", :action=>"profile"}

我错过了什么? 谢谢

更新:
感谢史蒂夫的回答和关注!

经过大量时间尝试,一位同事发现了我所缺少的:问题仅在于一些登录也是电子邮件,使用“@”、“.”等。解决方案是添加 to_url 在 params[:login] in link_to:

&amp;lt%= link_to 'name', profile_path(params[:login]<strong>.to_url</strong>) %&gt;

再次感谢您的关注!

【问题讨论】:

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


    【解决方案1】:

    使用您的配置,路由和助手似乎在 Rails 3.0.5 示例应用程序中运行良好。

    我在 Rails 控制台中验证了路由助手 profile_path:

    >> app.profile_path('example')
    => "/user/example"
    

    并检查它是否也在视图中工作:

    <%= link_to 'name', profile_path(params[:login]) %>
    

    两个地方都没有路线错误。并将 放在视图中显示路径“/user/example/whatever”被正确解析:

    --- !map:ActiveSupport::HashWithIndifferentAccess 
    controller: users
    action: profile
    login: example
    path: /whatever
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2011-07-18
      • 2011-06-16
      相关资源
      最近更新 更多