質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

838閲覧

一つのurlから別々のidを取得したいです。

jun3030

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/09/28 10:16

前提・実現したいこと

ruby on railsを使っています。
一つのurlから別々のidを取得したいです。
idを取得したいのはtasks#showアクションのurlからです

発生している問題・エラーメッセージ

エラーメッセージ
ActiveRecord::RecordNotFound in TasksController#show
Couldn't find User with 'id'=100

該当のソースコード

tasks

1class TasksController < ApplicationController 2 3 def index 4 @tasks = Task.where(user_id: @current_user.id).order("created_at DESC").paginate(page: params[:page], per_page: 5) 5 end 6 7 def show 8 @user = User.find(params[:id]) 9 @task = Task.find(params[:id]) 10 end 11 12ルーティング 13 Prefix Verb URI Pattern Controller#Action 14 root GET / static_pages#top 15 signup GET /signup(.:format) users#new 16 login GET /login(.:format) sessions#new 17 POST /login(.:format) sessions#create 18 logout DELETE /logout(.:format) sessions#destroy 19 GET /tasks/:id/users/:user_id(.:format) tasks#show 20 tasks GET /users/:id/tasks(.:format) tasks#index 21 POST /users/:id/tasks(.:format) tasks#create 22 new_task GET /users/:id/tasks/new(.:format) tasks#new 23edit_task GET /users/:id/tasks/:id/edit(.:format) tasks#edit 24 task GET /users/:id/tasks/:id(.:format) tasks#show 25 PATCH /users/:id/tasks/:id(.:format) tasks#update 26 PUT /users/:id/tasks/:id(.:format) tasks#update 27 DELETE /users/:id/tasks/:id(.:format) tasks#destroy 28 users GET /users(.:format) users#index 29 POST /users(.:format) users#create 30 new_user GET /users/new(.:format) users#new 31edit_user GET /users/:id/edit(.:format) users#edit 32 user GET /users/:id(.:format) users#show 33 PATCH /users/:id(.:format) users#update 34 PUT /users/:id(.:format) users#update 35 DELETE /users/:id(.:format) users#destroy

 

試したこと

具体的にこのような形にしたいです。
現在のルーティング
task GET /users/:id/tasks/:id(.:format) tasks#show
users/:idにはログインしているユーザーのid
tasks/:idには投稿したidを表記したいです。
例、、
理想 users/2/tasks/100
自分 users/100/tasks/100
このようになってしまいます、、
エラーの内容はid100のユーザーは存在しませんとなっています。確かに存在しません。どうやらusers/:idの部分がtasks/:idになっているみたいです。

ルーティングを
task GET /users/:user_id/tasks/:id(.:format) tasks#show
に変えてから
@user = User.find(params[:user_id])
@task = Task.find(params[:id])
でidをそれぞれ取得も試みましたができませんでした。

調べてもどうしても解決できません。どなたかご教授頂けないでしょうか汗

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/09/28 11:53

task GET /users/:id/tasks/:id(.:format) tasks#show へのlinkのあるviewを見せて下さい
jun3030

2019/09/28 13:26

返信ありがとうございます汗! tasks/index.html.erb <table class="table table-condensed"> <thead> <tr> <th>名称</th> <th>作成日</th> </tr> </thead> <tbody> <% @tasks.each do |task| %> <tr> <td><%= link_to task.tasks_name, task_path(task.id) %></td> <td><%= task.created_at.to_formatted_s(:datetime) %></td> <td class="center"> <%= link_to "編集", edit_task_path(task.id), class: "btn btn-success btn-edit" %> <%= link_to "削除", task, method: :delete, data: { confirm: "削除してもよろしいですか?" }, class: "btn btn-danger btn-delete" %> </td> </tr> <% end %> </tbody> </table> <%= will_paginate %> </div>
jun3030

2019/09/28 13:28

真ん中あたりの <td><%= link_to task.tasks_name, task_path(task.id) %></td> がその部分にあたります汗
guest

回答1

0

ベストアンサー

task_path(task.id)
では違いますね。
user_task_path(user,task)
みたいな書き方になります。
このhelperを作るには、「rails ネストした route」あたりで検索してみて下さい
例えば
https://railsguides.jp/routing.html#%E3%83%8D%E3%82%B9%E3%83%88%E3%81%97%E3%81%9F%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9
とか
https://qiita.com/keisukegdk/items/beb5a62c17278c25c00d

投稿2019/09/28 13:55

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jun3030

2019/09/28 16:09

的確なアドバイスありがとうございます! 無事urlとidの設定ができました!^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問