🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

343閲覧

Userが申し込みしたイベントの内容の取得方法がわかりません

hiroaki0117

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/03/15 02:36

前提・実現したいこと

railsでイベントマッチングのサイトを作っています。eventsテーブルが投稿内容で、entriesテーブルが申し込んだ内容となっています。userが申し込んだ内容を表示したいのですがうまく表示することができません。

該当のソースコード

routes.rb

Rails.application.routes.draw do devise_for :users, controllers: { registrations: 'users/registrations', omniauth_callbacks: 'users/omniauth_callbacks' } get 'entries/index' root to: 'events#index' resources :events do collection do get 'search' end resources :entries, only:[:new, :create] resource :likes, only:[:create, :destroy] end resources :users, only: [:show, :new] do member do get 'mypage' end end end

users.controller.rb

class UsersController < ApplicationController before_action :authenticate_user!, only: [:mypage] before_action :set_user, only:[:show, :mypage] before_action :move_to_index_edit, only:[:mypage] def show @events = @user.events.order("created_at DESC").page(params[:page]).per(6) @entries = @user.entries.order("created_at DESC").page(params[:page]).per(6) end def mypage end def new end private def set_user @user = User.find(params[:id]) end def move_to_index_edit if current_user.id != @user.id redirect_to root_path end end end

events.controller.rb

class EventsController < ApplicationController before_action :authenticate_user!, only:[:new, :create, :edit, :update, :destroy] before_action :event_id_params, only:[:show, :edit, :update, :destroy] before_action :move_to_index_edit, only:[:edit, :destroy] before_action :search_event, only:[:index, :search] def index @events = Event.order("created_at DESC").page(params[:page]).per(6).includes(:user) set_event_column end def new @event = Event.new end def create @event = Event.new(event_params) if @event.save redirect_to root_path, notice: 'イベントの投稿が完了しました' else render :new end end def show end def edit end def update if @event.update(event_params) redirect_to event_path, notice: 'イベントの編集が完了しました' else render :edit end end def destroy @event.destroy redirect_to root_path, notice: 'イベントが消去されました' end def search @events = @p.result.includes(:user) @events = @events.order("created_at DESC").page(params[:page]).per(6).includes(:user) end private def event_params params.require(:event).permit(:name, :image, :explanation, :genre_id, :day, :start_time_id, :end_time_id, :capacity, :area_id, :address).merge(user_id: current_user.id) end def event_id_params @event = Event.find(params[:id]) end def move_to_index_edit if current_user.id != @event.user_id redirect_to root_path end end def search_event @p = Event.ransack(params[:q]) set_event_column end def set_event_column @events_genre = Genre.where.not(id:1) @events_area = Area.where.not(id:1) end end

entries.controller.rb

class EntriesController < ApplicationController before_action :authenticate_user! before_action :set_event before_action :move_to_index_entry def new @entry = Entry.new end def create @entry = Entry.new(entry_params) if @entry.valid? @entry.save redirect_to root_path, notice: 'イベント申し込みが送信されました' else render action: :index end end private def set_event @event = Event.find(params[:event_id]) end def entry_params params.require(:entry).permit(:user_id, :event_id).merge(user_id: current_user.id, event_id: params[:event_id]) end def move_to_index_entry if current_user.id == @event.user_id || @event.id.blank? redirect_to root_path end end end

users テーブル

ColumnTypeOptions
nicknamestringnull: false
emailstringnull: false, unique: true
encrypted_passwordstringnull: false
family_namestringnull: false
first_namestringnull: false
kana_family_namestringnull: false
kana_first_namestringnull: false
birth_daydatenull: false
area_idintegernull: false
phone_numberstringnull: false
introductionstring

Association

  • has_many :events
  • has_many :entries
  • has_many :sns_credentials
  • belongs_to :area

events テーブル

ColumnTypeOptions
namestringnull: false
explanationtextnull: false
genre_idstringnull: false
daydatenull: false
start_time_idintegernull: false
end_time_idintegernull: false
latitudefloat
longitudefloat
capacitystringnull: false
area_idintegernull: false
addressstringnull: false

Association

  • belongs_to :user
  • has_many :entries
  • belongs_to :genre
  • belongs_to :area
  • belongs_to :start_time
  • belongs_to :end_time

entries テーブル

ColumnTypeOptions
eventreferencesnull: false, foreign_key: true
userreferencesnull: false, foreign_key: true

Association

  • belongs_to :user
  • belongs_to :event

補足情報(FW/ツールのバージョンなど)

  • Ruby 2.6.5
  • Ruby on Rails 6.0.3.4
  • MySQL 5.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Userに
has_many :entried_events, class_name: 'Event', thgrou: :entries
して
user.entried_events

投稿2021/03/15 03:09

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問