私は次のような URL を取得しようとしている新しい Rails 開発者です。
www.twitter.com/theusername
これが私のルートです:
match "/:username" => "posts#index"
これは機能し、私の localhost:3000/theusername を localhost:3000/posts/ にルーティングします
それから私は使用します:
def index
@user = User.find_by_username params[:username]
@search = Post.search do
fulltext params[:search]
with(:user, @user.id)
paginate(:page => params[:page] || 1, :per_page => 20)
end
end
残念ながら、これによりエラーが発生します。
nil の id と呼ばれますが、これは誤って 8 になります -- 本当に nil の id が必要な場合は、object_id を使用してください
また、Webサーバーはこれを表示します(役立つ場合):
Processing by PostsController#index as HTML
Parameters: {"username"=>"test"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 2 LIMIT 1
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
Completed 500 Internal Server Error in 2ms
RuntimeError (Called id for nil, which would mistakenly be 8 -- if you really wanted the id of nil, use object_id):
app/controllers/posts_controller.rb:10:in `block in index'
app/controllers/posts_controller.rb:8:in `index'