↓↓クリックして頂けると励みになります。
【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 | ビューの作成】
↓↓クリックして頂けると励みになります。