Railsでidが不要なアクション・ページを追加する方法


スポンサーリンク

Railsを使っていると、idが要らないにも関わらず、

Couldn't find User with 'id'〜〜〜

のようなエラーが表示されることがあります。idなどのパラメータが不要なページを無理やり出力しようとすると、表示されます。

ここで、routes.rbを見なおしてください。おそらく、

get '/users/hoge', to: 'users#hoge'
resources :users

のような記述が存在するかと思います。この部分を、

resources :users do
    get :hoge, on: :collection
end

複数存在する場合は、

resources :users do
    collection do
        get 'hoge'
        get 'hoge2'
    end
end

と書き換えましょう。:collectionがミソで、これによりidを伴わないパスを認識してくれます。
私の場合は、同一人物が作成したデータのリストを出力するため(一種のフィルタリング)のために使用しました。つまり、current_user.idと、データベース中のuser_idが一致するものの抽出です。

Railsガイドにも、「searchアクションを作成する場合」の例が書いてあるので、意外と必要な知識だったのかも…?

ご覧いただきありがとうございました。
なにかご指摘などございましたら、コメント欄によろしくお願いします。

last

フォローする