投稿詳細ページに遷移したい
現在投稿詳細ページに遷移し、実装を進めようとしておりましたがCouldn't find Tag with 'id'=3
とエラーが起きてしまいます。
1つ目の投稿では詳細ページに遷移できましたが、id=3
の投稿ページには遷移できない現象が起きております。
確認してみたところ、パラメーターの取得はできていると表示されておりました。
https://gyazo.com/9d3f1c443c51613223c28f6e8f35a238
私の認識だと、投稿テーブルと紐付いているタグテーブルの間に何らかの問題があると考えております。
発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in UploadsController#show Couldn't find Tag with 'id'=3 def show @upload = Upload.find(params[:id]) @tag = Tag.find(params[:id])⇦この部分 end private Request Parameters: {"_method"=>"get", "authenticity_token"=>"[FILTERED]", "id"=>"3"}
該当のソースコード
app/views/uploads/index.html.erb
html
1 <div id="content-table"> 2 <% @uploads.each do |upload| %> 3 <div class="content-page"> 4 <%= link_to upload_path(upload.id), class: "upload-link", method: :get do %> 5 <div class="upload-contents-wrapper"> 6 <div class="upload-img-contents"> 7 <%= image_tag upload.image, class: "upload-img" if upload.image.attached? %> 8 </div> 9 <div class="upload-contents-detail"> 10 <div class="upload-name"><%= upload.title %></div> 11 <% upload.tags.each do |tag| %> 12 <div class="upload-tags">#<%= tag.name %></div> 13 <% end %> 14 </div> 15 <div class="upload-contents-explain"> 16 <div class="upload-explain"><%= upload.text %></div> 17 </div> 18 <p class="upload-user"> 19 <a class="user-name__image" href="#"> 20 <img src="assets/image-4.jpg" width="40" height="40" alt=""> 21 </a> 22 <%= link_to upload.user.name, "#", class: "upload-user__name" %> 23 </p> 24 </div> 25 <% end %> 26 </div> 27 <% end %> 28 </div>
app/controllers/upload_controller.rb
controller
1class UploadsController < ApplicationController 2 def index 3 @uploads = Upload.all.order(created_at: :desc) 4 end 5 6 def new 7 @upload_form = UploadForm.new 8 end 9 10 def create 11 @upload_form = UploadForm.new(upload_params) 12 if @upload_form.valid? 13 @upload_form.save 14 redirect_to root_path 15 else 16 render new 17 end 18 end 19 20 def show 21 @upload = Upload.find(params[:id]) 22 @tag = Tag.find(params[:id]) 23 end 24 25 private 26 27 def upload_params 28 params.require(:upload_form).permit(:title, :text, :url, :working_day, :day_off, :cafe_wifi_id, :cafe_charging_id, :cafe_smoking_id, :image, :name).merge(user_id: current_user.id) 29 end 30end
app/config/routes
routes
1Rails.application.routes.draw do 2 devise_for :users 3 get 'uploads/index' 4 root to: "uploads#index" 5 resources :uploads, only: [:index, :new, :create, :show] 6end
app/models/upload_form
model
1class UploadForm 2 include ActiveModel::Model 3 attr_accessor :title, :text, :url, :working_day, :day_off, :cafe_wifi_id, :cafe_charging_id, :cafe_smoking_id, 4 :user_id, :image, :name 5 6 with_options presence: true do 7 validates :title 8 validates :text 9 validates :cafe_wifi_id 10 validates :cafe_charging_id 11 validates :cafe_smoking_id 12 validates :user_id 13 validates :image 14 validates :name 15 end 16 17 with_options numericality: { other_than: 0 } do 18 validates :cafe_wifi_id 19 validates :cafe_charging_id 20 validates :cafe_smoking_id 21 end 22 23 def save 24 upload = Upload.create(title: title, text: text, url: url, working_day: working_day, day_off: day_off, cafe_wifi_id: cafe_wifi_id, cafe_charging_id: cafe_charging_id, cafe_smoking_id: cafe_smoking_id, user_id: user_id, image: image) 25 tag = Tag.create(name: name) 26 # map = Map.create(address: address, latitude: latitude, longitude: longitude, upload_id: upload_id) 27 28 UploadTagRelation.create(upload_id: upload.id, tag_id: tag.id) 29 end 30end
試したこと
・今回のエラーの場合、コントローラー内のshowアクション
の記述、index.html.erbのパスの指定や記述の内容
に問題があると考えました。
・ <% @uploads.tags.each do |tag| %>
ような記述にしてみましたが変化はありませんでした。
・他の投稿では詳細ページに遷移することができているため、index.html.erb
のeachメソッドの記述方法などに誤りはないかなと思い、コントローラー内のshowアクションの@tag=Tag.find(params[:id])
にエラーの原因があると考えましたが、どこを修正すればいいのか調べてもわかりませんでした。
補足情報(FW/ツールのバージョンなど)
開発環境
・rubymine
・ruby(3.0.1)
・Ruby on rails (6.1.3.1)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 07:12