みんなが今朝元気でありますように。最近レールを学んでいて、練習用に小さな「ソーシャル」アプリに取り組んでいます。私はこれに対する良い答えを探しましたが、私にとって正しいものを見つけることができませんでした. これが私が今理解しようとしているものです:
デフォルトの 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 で動作していますが、この方法でも動作させる方法を学びたいです。
みんなありがとう、ありがとう!