希望大家今天早上好。最近一直在学铁路,并一直致力于一个小的“社交”应用程序进行练习。我环顾四周寻找一个好的答案,但找不到合适的东西给我。这就是我现在想要解决的问题:
默认情况下,网址为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仍显示所有用户的索引,用户/名称会抛出错误(如果/ name有效,那么我就不需要/ users /无论如何名字)。错误是用户控制器中的未定义方法`推文'为nil:NilClass 。
我想要完成的是hi.com/username和hi.com/username/following等。还需要我的静态页面仍然可以工作。我有一切与/ users / name一起工作,但我想学习如何让它以这种方式工作。
谢谢大家,我很感激!
答案 0 :(得分:0)
基本上,它很容易,但它有副作用。
只需在routes.rb
:
get '/:id', to: 'user#show'
但是,名为about
或users
或pages
的用户将无法查看其个人资料,因为该路径已在routes.rb
中使用。