戻る

Rails6.0


動画学習サイトの構築 Rails6.0

  (0)
2,000円

タスク6-2   レビューコントローラ

このタスクについて


タスクの内容を一部抜粋します。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてこのアプリケーションのフルコードをダウンロードすることが可能になります。




「app\controllers」フォルダに「reviews_controller.rb」ファイルを新規作成してください。



app\controllers\reviews_controller.rb(新規作成したファイル)
 
class ReviewsController < ApplicationController 

	def create 
		if Review.exists?(project_id: review_params[:project_id], user_id: current_user.id) 
			flash[:alert] = "レビュー済みです。" 
		else 
			@review = Review.create(review_params) 
			project = @review.project 
			if @review.save 
				flash[:notice] = "レビューを投稿しました。" 
			else 
				flash[:alert] = "レビューできません" 
			end 
		
		end 
		redirect_to request.referrer 
	end 
    
	def destroy 
		@review = Review.find(params[:id]) 
		project = @review.project 
		@review.destroy 
		flash[:alert] = "レビューを削除しました。" 
		redirect_to project 
    end 
    
    private 
    
    def review_params 
        params.require(:review).permit(:stars, :review, :project_id, :user_id) 
    end 
    
end 



「app\controllers\project_controller.rb」ファイルに以下の記述を追加します。


記述追加 app\controllers\project_controller.rb(18行目)
     @review = Review.new 
    @reviews = @project.reviews.order('created_at desc') 
    @hasReview = @reviews.find_by(user_id: current_user.id) if current_user 



app\controllers\project_controller.rb
 
class ProjectController < ApplicationController 

  before_action :set_project, only: [:show] 
  before_action :authenticate_user!, only: [:list] 

  def index 
  	@projects = Project.all 
  end 

  def show 
  	@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.order('created_at desc') 
      
      @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 

  private 
  
    # コールバックを使用して、アクション間で共通のセットアップまたは制約を共有します。 
    def set_project 
      @project = Project.find(params[:id]) 
    end 

    # 信頼できるパラメータのリストのみを許可します。 
    def project_params 
      params.require(:project).permit(:name, :content, :price, :active, :description) 
    end 
end 



ルートの設定をします。


1.20行目に以下の記述を追加します。
post '/reviews', to: 'reviews#create'



2.24行目に以下の記述を追加します。
resources :reviews, only: [:create, :destroy]



この続きはプロジェクトを購入していただくことで見ることができます。
プロジェクトを購入していただくとこのタスクの内容の全てを読みやすい表示で見ることができます。
プログラムコードが色分けされて見やすくなります。
プログラムコードに行番号が付きます。
本文が色分けされて見やすくなります。
そしてプロジェクトを購入するとこのアプリケーションのフルコードをダウンロードすることができます。

まだレビューはありません。

動画学習サイトの構築 Rails6.0

2,000円

Rails6.0で作成しています。
動画で学べるサイトを構築するプロジェクトです。
プロジェクトを登録し、そのプロジェクトに動画を登録できます。
プロジェクトはクレジットカードで購入でき、購入後すぐに動画を見ることができます。
写真の複数アップロード、レビュー機能の実装、Google認証、アマゾンS3の利用方法も解説。
管理ダッシュボードtrestleの実装、Gメールの設定、 HEROKUへのデプロイ方法を解説。
質問があればメッセージを送ることができ、リアルタイムで会話表示することができます。
フルコードのダウンロード可能。

タスク数: 128