From 2e4e522c96ea675e88171e13443d9c3bb225dfb8 Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Tue, 26 Sep 2023 12:46:31 -0500 Subject: [PATCH] Complete Lesson 24 --- app/controllers/reviews_controller.rb | 24 +++++++++++++++++++++++- app/views/movies/show.html.erb | 1 + app/views/reviews/new.html.erb | 16 ++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 app/views/reviews/new.html.erb diff --git a/app/controllers/reviews_controller.rb b/app/controllers/reviews_controller.rb index 0c07f2c..d5b8e97 100644 --- a/app/controllers/reviews_controller.rb +++ b/app/controllers/reviews_controller.rb @@ -1,6 +1,28 @@ class ReviewsController < ApplicationController + before_action :set_movie + def index - @movie = Movie.find(params[:movie_id]) @reviews = @movie.reviews end + def new + @review = @movie.reviews.new + end + def create + @review = @movie.reviews.new(review_params) + if @review.save + redirect_to movie_reviews_path(@movie), notice: "Thanks for your review!" + else + render :new, status: :unprocessable_entity + end + end + + private + + def set_movie + @movie = Movie.find(params[:movie_id]) + end + + def review_params + params.require(:review).permit(:name, :stars, :comment) + end end diff --git a/app/views/movies/show.html.erb b/app/views/movies/show.html.erb index a321526..ce6b53a 100644 --- a/app/views/movies/show.html.erb +++ b/app/views/movies/show.html.erb @@ -27,6 +27,7 @@ <%= total_gross(@movie) %> + <%= link_to "Write Review", new_movie_review_path(@movie), class: "review" %>
<%= link_to "Edit", edit_movie_path(@movie), class: "button" %> <%= link_to "Delete", movie_path(@movie), class: "button", data: { turbo_method: :delete, turbo_confirm: "Are you sure?" } %> diff --git a/app/views/reviews/new.html.erb b/app/views/reviews/new.html.erb new file mode 100644 index 0000000..7be47ad --- /dev/null +++ b/app/views/reviews/new.html.erb @@ -0,0 +1,16 @@ +

New Review for <%= link_to @movie.title, @movie %>

+ +<%= form_with(model: [@movie, @review]) do |f| %> + <%= render "shared/errors", object: @review %> + + <%= f.label :name %> + <%= f.text_field :name, autofocus: true %> + + <%= f.label :stars %> + <%= f.select :stars, [1, 2, 3, 4, 5], prompt: "Pick one" %> + + <%= f.label :comment %> + <%= f.text_area :comment, placeholder: "What did you think?" %> + + <%= f.submit "Post Review" %> +<% end %>