0

みんなが今朝元気でありますように。最近レールを学んでいて、練習用に小さな「ソーシャル」アプリに取り組んでいます。私はこれに対する良い答えを探しましたが、私にとって正しいものを見つけることができませんでした. これが私が今理解しようとしているものです:

デフォルトの 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 で動作していますが、この方法でも動作させる方法を学びたいです。

みんなありがとう、ありがとう!

4

1 に答える 1

0

基本的には簡単ですが、副作用があります。

の最後に追加するだけroutes.rbです:

get '/:id', to: 'user#show'

ただし、about、 またはusersまたはという名前のユーザーpagesは、パスがroutes.rb.

于 2013-06-01T18:20:11.233 に答える