我正在 Ruby on Rails 中構建一個應用程式,其中顯示一個事件,當用戶單擊該事件下的按鈕時,他們將被重定向到一個頁面,該頁面顯示該事件的所有評論。不過,我遇到了一些麻煩。當我單擊該按鈕時,我被重定向到“events/:id/reviews”,并且收到一條錯誤訊息,顯示“nil:NilClass 的未定義方法 `each'”。我很困惑,因為對我來說,我的評論控制器中的索引方法和我的事件顯示視圖中的路由看起來都是正確的。評論控制器:
class ReviewsController < ApplicationController
before_action :redirect_if_not_logged_in
def new
if @event = Event.find_by_id(params[:event_id])
@event = @event.reviews.build
else
@review = Review.new
end
end
def create
@review = current_user.reviews.build(review_params)
if @review.save
redirect_to review_path(@review)
else
render :new
end
end
def show
@review = Review.find_by_id(params[:id])
end
def index
if @event = Event.find_by_id(params[:event_id])
@events = @event.reviews
else
@reviews = Review.all
end
end
private
def review_params
params.require(:review). permit(:event_id, :content, :stars)
end
end
事件 - show.html.erb
<header class="py-10 bg-blue-200 text-black text-5xl font-caveat text-center"><%= @event.name %></header>
<br></br>
<div>
<p><%= @event.description %></p>
</div>
<%= link_to "Edit #{@event.name}", edit_event_path(@event) if @event.user == current_user%>
<br></br>
<%= link_to "See All Reviews for #{@event.name}", event_reviews_path(@event) %>
<%= link_to "See who is attending #{@event.name}", event_rsvps_path(@event) %>
有人明白我在這里做錯了什么嗎?謝謝
uj5u.com熱心網友回復:
錯誤在這里:
def index
if @event = Event.find_by_id(params[:event_id])
# This is the error, this set the variable @events
# @events = @event.reviews
# the correct variable should be @reviews
@reviews = @event.reviews
else
@reviews = Review.all
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/330648.html
標籤:红宝石轨道
下一篇:為什么在Gemfile中包含gem可以解決railtie問題,即使Gemfile.lock中已包含相同的gem?
