「app\controllers」フォルダに「reviews_controller.rb」ファイルを新規作成してください。
app\controllers\reviews_controller.rb(新規作成したファイル)
class ReviewsController < ApplicationController def create @review = Review.create(review_params) project = @review.project redirect_to project end def destroy @review = Review.find(params[:id]) project = @review.project @review.destroy redirect_to project end private def review_params params.require(:review).permit(:star, :comment, :project_id, :user_id) end end
「app\controllers\project_controller.rb」ファイルに以下の記述を追加します。
記述追加 app\controllers\project_controller.rb(18~21行目)
@review = Review.new @reviews = @project.reviews @hasReview = @reviews.find_by(user_id: current_user.id) if current_user
app\controllers\project_controller.rb
class ProjectController < ApplicationController before_action :authenticate_user!, only: [:list] def index @projects = Project.all end def show @project = Project.find(params[:id]) @tasks = @project.tasks.order(:tag) @joined = false if !current_user.nil? && !current_user.projects.nil? @joined = current_user.projects.include?(@project) end @users = @project.users.order('created_at desc').first(10) @review = Review.new @reviews = @project.reviews @hasReview = @reviews.find_by(user_id: current_user.id) if current_user end def list if !current_user.nil? @projects = current_user.projects end end end
ルートの設定をします。
記述追加 config\routes.rb
23行目に「resources :reviews, only: [:create, :destroy]」の記述を追加しています。
Rails.application.routes.draw do devise_for :admin_users, ActiveAdmin::Devise.config ActiveAdmin.routes(self) devise_for :users, path: '', path_names: {sign_up: 'register', sign_in: 'login', edit: 'profile', sign_out: 'logout'}, controllers: {omniauth_callbacks: 'omniauth_callbacks', registrations: 'registrations'} # ルートページをapp\views\pages\about.html.erbに設定 root 'pages#about' get 'pages/about' get '/myprojects' => 'project#list' get '/payment_method' => "users#payment" post '/free' => 'charge#free' post '/add_card' => "users#add_card" resources :project do resources :task, only: [:show] resources :reviews, only: [:create, :destroy] end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end