実現したいこと
Railsで部分テンプレートを使い、他コントローラのビューを表示したいです。
具体的には
productsコントローラのshowビューファイルをuserコントローラのshowビューファイル中で表示したいです。
イメージとしては、自身が投稿したレビューをusers/show.html.erbに陳列する形です。
##該当のソースコード
##products/show.html.erb <% @products.each do |review| %> <%= render partial: "product", locals: { product: @product, review: review } %> <% end %>
##products/_product.html.erb <div class="review-detail"> <div class="review-detail-item"> <div class="username"> <a class="user-page" href="/users/<%= review.user_id %>">@<%= review.user.nickname %></a> <p class="text-small"> <% if review.comments.present? %> <span>@<%= review.user.nickname %>のレビューに対しての平均評価:</span> <span class="rating-star"> <i class="star-actived rate-<%= review.comments.average(:rate).round %>0"></i> </span> <% else %> <span>@<%= review.user.nickname %>のレビューに対しての平均評価:</span> <span class="rating-star"> <i class="star-actived rate-0"></i> </span> <% end %> </p> </div> <div class="write-review"> <h3><span class="product-btn">title:<%= product.bookname %></span></h3> </div> <div class="review-1"> <br><p><%= truncate(review.review, length: 10) do %></p> <% end %> </div> </div> <%= link_to 'レビュー詳細', "/products/#{product.id}/reviews/#{review.id}", method: :get, class: "right-btn-review-detail" %> </div>
上記内容を下記(users/show.html.erb)のeach文の間に設定したいです。
##users/show.html.erb <% @users.each do |review| %> <ーーここにーー> <% end %>
念の為usersコントローラも載せておきます。
##users_controller class UsersController < ApplicationController def show @user = User.find(params[:id]) @nickname = @user.nickname @users = current_user.reviews.page(params[:page]).per(3) end end
試したこと
<% @users.each do |review| %> <%= render partial: "products/show", locals: { product: @product, review: review } %> <% end %>
このようなエラーが出てしまいました。
https://gyazo.com/586d83de03b84db3e727815de751cac0
:as => "review"を最後尾に加えたりもしましたが、SyntaxErrorが出ます。。
どなたかうまくいく方法をご教示いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/15 13:21