【发布时间】:2013-09-23 15:37:56
【问题描述】:
在这个关于设计路线的问题的答案中:Devise & Custom Rails User URLs 有一行代码:
match '/:user' => "users#show", :as => :user_profile
这显然适用于提问者,但不适用于我。我最终得到了
NoMethodError in UsersController#show
undefined method `books' for nil:NilClass
当我转到 localhost:3000/username 而不是 localhost:3000/user/username 时。根据我的路由文件,我认为是因为上面的 match 行无法正常工作,并且该 url 没有引用任何用户。
第二个 url 将我引导到用户的 show 页面,但我不希望 url 中出现额外的 /user。
所以我想弄清楚 '/:user'、:as 和 :user_profile 到底是什么意思,因为我认为我应该在这里替换一些特定于我的应用程序的东西。我认为 :as 是某种别名方法。我在设计文档中找不到关于名为 user_profile 的路由的任何内容。而且我不知道 '/:user' 指的是什么。用户对象的实例?我用来指代特定用户的数据库中的用户属性/唯一列? (我使用 permalink 作为我的用户定义的 url)。
【问题讨论】:
-
请发布您的 routes.rb 文件以及您的 UsersController。
-
问题是我使用的是 {match '/:permalink' => "users#show", :as => :user_profile} 而不是 {match '/:id' => "users #show", :as => :user_profile}。所以,至少它有效,但不幸的是我无法向任何人解释为什么它有效。
标签: ruby-on-rails hash devise routes symbols