🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2870閲覧

Rails レビュー投稿後、詳細画面へ遷移させたいがエラーになる

camplife

総合スコア1

Ruby

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/31 02:09

編集2021/02/02 00:00

前提・実現したいこと

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 id ="campsite_<%= @campsite.id %>"> <%= render 'post', campsite: @campsite %> </div> <%= render 'reviews/form', review: @review, campsite: @campsite %>
</div>
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/ツールのバージョンなど) 初学者でして、分かりづらい文章で大変恐縮ではありますが、どなたかご教授くだされば幸いです。 よろしくお願いいたします。

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

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

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

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

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

winterboum

2021/01/31 03:57

載っているviewのfile名が判るようにしてください。app/views から書いて。
camplife

2021/01/31 09:07

コメントありがとうございます。 viewファイル名を記載しましたので、ご確認よろしくお願いいたします。
guest

回答1

0

ベストアンサー

エラーメッセージを素直に読むと reviews/_post.html.erb を見つけられないと読めるのですが、このファイルはあるんでしょうか?

app/views/campsites/show.html.erb に以下の記述があり、これを探せなくて出ているエラーに見えます。

<%= render 'post', campsite: @campsite %>

--

エラーメッセージからわかるとおり、Railsは reviews/_post を探しています。ディレクトリが違いますね。
campsites/_post を探せていません。

パーシャルの呼び出しを変えてみたらどうなるでしょうか?

<%= render 'post', campsite: @campsite %>     ↓ <%= render 'campsites/post', campsite: @campsite %>

投稿2021/02/01 17:42

編集2021/02/02 01:48
oakbow

総合スコア227

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

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

camplife

2021/02/02 00:38

ご回答頂きありがとうございます。 ご指摘のあったreviews/_post.html.erbのパーシャルはあります。追加しました。 renderメソッドにて呼び出す際に、reviwesコントローラでcampsites/show.html.erbを呼び出している為、ファイルが見つからずエラーになっているのでしょうか?
camplife

2021/02/02 11:42

okabow様 無事解消しました。app/views/campsites/show.html.erbのパーシャルファイルcampsites/_postが呼び出されず、指定ディレクトリをreviews/_postではなくcampsites/_postに指定しなければ行けなかった様です。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問