希望大家今天早上都好。最近一直在学习 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 的未定义方法“推文” 。
同样,我要完成的是 hi.com/username 和 hi.com/username/following 等。还需要我的静态页面仍然可以工作。我的一切都与 /users/name 一起工作,但我也想学习如何让它以这种方式工作。
谢谢大家,我很感激!