前提・実現したいこと
Railsを使ってキャンプ場検索アプリケーションを開発しています。
キャンプ場詳細ページからレビューを投稿できる機能を実装し、投稿が失敗した時の遷移先を詳細ページに遷移させたいがエラーになる。
発生している問題・エラーメッセージ
ActionView::MissingTemplate in Reviews#create
Showing /Users/yoshitaketakahiro/projects/camp-site/app/views/campsites/show.html.erb where line #36 raised:
Missing partial reviews/_post, application/_post with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in:
- "/Users/yoshitaketakahiro/projects/camp-site/app/views"
- "/Users/yoshitaketakahiro/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/devise-4.7.3/app/views"
- "/Users/yoshitaketakahiro/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actiontext-6.0.3.4/app/views"
- "/Users/yoshitaketakahiro/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionmailbox-6.0.3.4/app/views"
Extracted source (around line #36):
</div><div id ="campsite_<%= @campsite.id %>"> <%= render 'post', campsite: @campsite %> </div> <%= render 'reviews/form', review: @review, campsite: @campsite %>
class ReviewsController < ApplicationController def index end def create @review = Review.new(review_params) @review.user_id = current_user.id if @review.save redirect_to campsite_reviews_path(@review.campsite) else @campsite = Campsite.find(params[:campsite_id]) render "campsites/show" end end private def review_params params.require(:review).permit(:campsite_id, :score, :content) end end ```ここに言語名を入力 ```ここに言語名を入力 class CampsitesController < ApplicationController before_action :set_campsite, only:[:destroy, :edit, :update, :show] before_action :authenticate_user!, except: [:index, :category, :search, :show] before_action :search_category_campsite, only: [:index, :category] def index @campsites = Campsite.includes(:user).order('created_at DESC') end def new @campsite = Campsite.new end def create @campsite = Campsite.new(campsite_params) # binding.pry if @campsite.valid? @campsite.save redirect_to root_path else render :new end end def destroy if @campsite.destroy redirect_to root_path else render :index end end def edit end def update if @campsite.update(campsite_params) redirect_to root_path else render :edit end end def show @campsite = Campsite.find(params[:id]) @review = Review.new @comment = Comment.new @comments = @campsite.comments.includes(:user) end def category @campsite = @q.result status_id = params[:q][:status_id_eq] if @status = Status.find_by(id: status_id) else redirect_to root_path end end def search @campsites = Campsite.search(params[:keyword]) end private def campsite_params params.require(:campsite).permit(:name, :text, :image, :genre_id, :prefecture_id, :status_id).merge(user_id: current_user.id) end def set_campsite @campsite = Campsite.find(params[:id]) end def search_category_campsite @q = Campsite.ransack(params[:q]) end end ```ここに言語名を入力 ```ここに言語名を入力 app/views/reviews/_form.html.erb <p class="is-size-4 mb-3">レビューを書く</p> <div class= "raiting-box mt-3"> <%= form_with model: review, url: campsite_reviews_path(campsite), local: true do |f| %> <div class="main-rating"> <div class="raiting mb-3"> <span class="fa fa-star-o" id="star"></span> <span class="fa fa-star-o" id="star"></span> <span class="fa fa-star-o" id="star"></span> <span class="fa fa-star-o" id="star"></span> <span class="fa fa-star-o" id="star"></span> </div> <div class="ml-3 rating-value-display"><span id="rating-value-display">0</span>/5</div> </div> <%= f.hidden_field :campsite_id, value: campsite.id %> <%= f.hidden_field :score, id: "rating-value" %> <%= f.text_field :content, class: "textarea" %> <%= f.submit "保存", class: "button mt-3" %> <%= link_to "他のレビューをみる", campsite_reviews_path(campsite), class: "button light ml-3 mt-3" %> <%end%> </div> <%= javascript_include_tag 'reviews.js' %> ```ここに言語名を入力 ```ここに言語名を入力 app/views/campsites/show.html.erb <div class="contents row"> <%# <div class="content_post" > %> <div class="more"> <%= image_tag @campsite.image.variant(resize: '400x500') %> <ul class="more_list"> <% if user_signed_in? && current_user.id == @campsite.user_id %> <li> <%= link_to '編集', edit_campsite_path(@campsite.id), method: :get %> </li> <li> <%= link_to '削除', campsite_path(@campsite.id), method: :delete %> </li> <%end%> </ul> </div> <div class='item-info'> <h3 class='item-name'> <i class="fas fa-camera"></i> <%= "SITE NAME" %><br> <%= @campsite.name %><br><br> <i class="fab fa-apple"></i> <%="サイト情報" %><br> <i class="fas fa-beer"></i> <%= "都道府県: #{@campsite.prefecture.name}" %><br> <i class="fas fa-beer"></i> <%= "場内設備:" %> <br><%= @campsite.genre.name %> <br> <i class="fas fa-beer"></i> <%= "施設タイプ:" %> <br><%= @campsite.status.name %><br><br> <i class="fas fa-beer"></i> <%= "サイト紹介: #{@campsite.text}" %> <br><br> <div id ="campsite_<%= @campsite.id %>"> <%= render 'post', campsite: @campsite %> </div> <%= render 'reviews/form', review: @review, campsite: @campsite %> </div> <div class="container"> <% if current_user %> <%= form_with(model: [@campsite, @comment], local: true) do |f| %> <%= f.text_area :text, placeholder: "コメントする", rows: "2" %> <%= f.submit "コメントする" %> <% end %> <% else %> <strong><p>※※※ コメントの投稿には新規登録/ログインが必要です ※※※</p></strong> <% end %> <div class="comments"> <h4><コメント一覧></h4> <% if @comments %> <% @comments.each do |comment| %> <%= ":#{comment.user.nickname}" %> <p><%= comment.text %></p> <% end %> <% end %> </div> ```ここに言語名を入力 ```ここに言語名を入力 app/views/campsites/_post.html.erb <% if user_signed_in? %> <% if current_user.liked_by?(@campsite.id) %> <div><%= link_to destroy_like_path(@campsite.id), method: :DELETE, remote: true do %> <%= @campsite.likes.count %></div> <i class="far fa-heart unlike-btn" ></i> <%end%> <% else %> <div><%= link_to create_like_path(@campsite.id), method: :POST, remote: true do %> <%= @campsite.likes.count %></div> <i class="fas fa-heart like-btn"></i> <% end %> <% end %> <%end %> ```ここに言語名を入力 ### 試したこと ActionView::MissingTemplateである事から、view、該当のファイルが無いよと言うことである事から、 該当のファイルを確認するが特に問題ない。CampsitesControllerのshowアクションで定義している変数を呼び出し側reviewsコントローラーのcreateアクション内で同じ変数を定義するが違うエラーになります。 ### 補足情報(FW/ツールのバージョンなど) 初学者でして、分かりづらい文章で大変恐縮ではありますが、どなたかご教授くだされば幸いです。 よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー