学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails7.1 | 仕事売買アプリ作成 | 21 | コントローラー作成

↓↓クリックして頂けると励みになります。



20 | モデル作成】 << 【ホーム】 >> 【22 | ビューの作成



仕事コントローラー作成
仕事コントローラー作成


Ruby on Railsのコントローラー(Controller)は、MVC(Model-View-Controller)アーキテクチャの一部です。
コントローラーは、アプリケーションを管理し、クライアントからのリクエストを受け取り、それに応じてモデルとビューとの間で情報を調整します。
Ruby on Railsのコントローラーは一般的にアプリケーション内でルーティングと結びつき、HTTPリクエストに応じて特定のコントローラーアクションが呼び出されます。
アクションはRubyメソッドとして実装され、特定のビューをレンダリングしたり、リダイレクトしたり、データを操作したりする役割を果たします。
コントローラーはユーザーインターフェースとデータモデルを結びつける役割を果たします。

ジェネレーターを使って仕事コントローラを作成していきます。


コマンド
rails g controller Gigs new create edit update show


ルートの設定をします。
自動で書かれた記述は削除します。


記述追加 config\routes.rb(17行目)

resources :gigs



config\routes.rb

Rails.application.routes.draw do

  # ルートを app\views\pages\home.html.erb に設定
  root 'pages#home'
  
  # get
  get 'pages/home'
  get '/dashboard', to: 'users#dashboard'
  get '/users/:id', to: 'users#show', as: 'user'

  # post
  post '/users/edit', to: 'users#update'

  resources :gigs

  # device
  devise_for :users, 
    path: '', 
    path_names: {sign_up: 'register', sign_in: 'login', edit: 'profile', sign_out: 'logout'},
    controllers: {omniauth_callbacks: 'omniauth_callbacks', registrations: 'registrations'}
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end



「app\controllers\gigs_controller.rb」ファイルを以下の内容に更新します。


app\controllers\gigs_controller.rb

class GigsController < ApplicationController
 
  before_action :authenticate_user!, except: [:show]
  before_action :set_gig, except: [:new, :create]
  before_action :is_authorised, only: [:edit, :update, :upload_photo, :delete_photo]

  def new
    @gig = current_user.gigs.build
    @categories = Category.all
  end

  def create
    @gig = current_user.gigs.build(gig_params)

    if @gig.save
      @gig.pricings.create(Pricing.pricing_types.values.map{ |x| {pricing_type: x} })
      redirect_to edit_gig_path(@gig), notice: "保存しました"
    else
      redirect_to request.referrer, flash: { error: @gig.errors.full_messages }
    end
  end

  def edit

  end

  def update

  end

  def show
  end

  def upload_photo

  end

  def delete_photo

  end

  private

  def set_step
    @step = params[:step].to_i > 0 ? params[:step].to_i : 1
    if @step > 5
      @step = 5
    end
  end

  def set_gig
    @gig = Gig.find(params[:id])
  end

  def is_authorised
    redirect_to root_path, alert: "あなたには権限がありません。" unless current_user.id == @gig.user_id
  end

  def gig_params
    params.require(:gig).permit(:title, :video, :summary, :active, :category_id, :has_single_pricing, 
                                pricings_attributes: [:id, :title, :description, :delivery_time, :price, :pricing_type])
  end
end


これで仕事コントローラーの準備が整いました。


20 | モデル作成】 << 【ホーム】 >> 【22 | ビューの作成




↓↓クリックして頂けると励みになります。

関連記事(外部サイト)