【发布时间】:2013-06-01 18:13:41
【问题描述】:
希望大家今天早上一切都好。最近一直在学习 rails,并且一直在开发一个小的“社交”应用程序来练习。我四处寻找一个好的答案,但找不到适合我的东西。这是我现在想要弄清楚的:
默认情况下,url 是 hi.com/user/12,到目前为止,我已将其更改为 /user/name。那里一切正常。但当然,我想更进一步,做 hi.com/name(主要是因为我想了解它是如何正确完成的)。
这是我的(缩写)路线:
resources :users do
member do
get :following, :followers
end
end
root to: 'pages#home'
match '/help', to: 'pages#help'
match '/about', to: 'pages#about'
match '/contact', to: 'pages#contact'
match '/signup', to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
这是控制器的显示视图:
def show
@user = User.find_by_username(params[:id])
@tweets = @user.tweets.paginate(page: params[:page])
end
现在我尝试将match ':username', to: 'users#show' 粘贴在我的路由中,然后将控制器中的find_by_username(params[:id]) 更改为find_by_username(params[:username])。这实际上效果很好,并在 hi.com/name 上显示了所有正确的用户信息。关注者和关注者仍然(如预期)在用户/名称/关注者上(并且他们工作正常)。但是,所有静态页面都会中断,包括 /signout(有点重要:p),虽然 /users 仍然显示所有用户的索引,但 users/name 会引发错误(如果 /name 有效,那么我不需要 /users/无论如何命名)。错误是用户控制器中 nil:NilClass 的未定义方法 `tweets'。
我要再次尝试完成的是 hi.com/username 和 hi.com/username/following 等。还需要我的静态页面仍然可以工作。我的一切都与 /users/name 一起工作,但我也想学习如何让它以这种方式工作。
谢谢大家,我很感激!
【问题讨论】:
-
只是作为建议:创建问题时,请坚持基本信息。您可以省去开头段落和结尾段落。我们更喜欢为您提供良好答案所需的事实和信息。除此之外的叙述并不是真正需要的,并且可能会出现“TL;DR”响应。
-
好的,我会记住的。我只是想提供一些背景信息,而且我是菜鸟,所以我不太确定可能/可能不需要哪些信息。谢谢!
-
如果需要更多信息,人们会询问。
标签: ruby-on-rails ruby routes url-routing