イベント show controller に次のコードがあります。
def show
@event = Event.find_by_name(params[:id])
if request.path != event_path(@event)
redirect_to @event, status: :moved_permanently
end
if @event.videos.present?
@video = @event.videos.find(params[:video]) || @event.videos.first
if :video_id.present? && current_user && @video.premium?
@order = Order.new(user_id: current_user.id, video_id: @video.id, price: @video.price)
elsif :event_id.present? && current_user && @event.premium?
@order = Order.new(user_id: current_user.id, event_id: @event.id, price: @event.price)
end
end
@user = User.new
end
この行:
@video = @event.videos.find(params[:video]) || @event.videos.first
次のリンクのように ID でパラメーターに渡された場合、ビデオを見つける必要があります。
event_path(video.event.name, video: video)
ビデオがパラメーターに渡されると、アプリは正常に動作し、正しいビデオが正しいイベントに表示されます。
ただし、ビデオ ID がパラメーターに渡されない場合、次のエラーが発生します。
Couldn't find Video without an ID
|| だと思った オペレーターは @event.videos.find(params[:video] の部分をスキップして、表示するイベントに関連付けられた最初のビデオを選択するだけですが、明らかにこれはもう起こっていません。確かなことは言えませんが、ビデオに。
ビデオはイベントに属し、イベントには多くのビデオがあります。
@video にパラメーターが渡されたときにクリックされたビデオを表示し、パラメーターが渡されていない場合はイベントに属する最初のビデオを表示する方法を教えてもらえますか?