前提・実現したいこと
カレンダーを他のユーザーと共有できるアプリケーションを作成しています。
その際あるユーザーのカレンダーを共有する時、一度同じカレンダーを追加したら共有済みのような記述に変更したいのですが上手く条件分岐できません。
どなたかご教授いただけると助かります。(必要であれば他のファイルも追加いたします。)
該当のソースコード
share_calendar.html.erb(共有するカレンダーを追加するページ)
<h1><%= "#{@user.nickname}" + "さんとシェアするカレンダーを選択" %></h1> <% @calendars.each do |calendar| %> <% next unless current_user.id == calendar.user_id %> <%= link_to "#{calendar.calendar_name}のカレンダーを共有", share_calendar_create_calendar_path(calendar.id, user_id: @user.id),method: :post %><br> <% end %> <% @share_calendars.each do |share_calendar| %> <% next unless share_calendar.user_id == @user.id %> <%= share_calendar.calendar.calendar_name + "のカレンダーは共有済みです" %> <% end %>
calendar_controller.rb
class CalendarsController < ApplicationController before_action :authenticate_user!, only: [:new, :create, :show, :destroy] def index @calendars = Calendar.all end def new @calendar = Calendar.new end def create @calendar = Calendar.new(calendar_params) if @calendar.save redirect_to root_path else render :new end end def show @calendar = Calendar.find(params[:id]) @schedules = Schedule.all redirect_to root_path unless @calendar.user_id == current_user.id end def destroy @calendar = Calendar.destroy(params[:id]) end def share_user if params[:email].present? @user = User.where(email: "#{params[:email]}") else @user = User.none end end def share_calendar @user = User.find(params[:id]) @calendars = Calendar.all @share_calendars = ShareCalendar.all end def share_calendar_create @calendar = Calendar.find(params[:id]) @user = User.find(params[:user_id]) @share_calendar = ShareCalendar.new(calendar_id: params[:id],user_id: @user.id) if @share_calendar.save else redirect_to root_path end end private def calendar_params params.require(:calendar).permit(:calendar_name).merge(user_id: current_user.id) end def share_calendar_params params.permit(user_id: @user_id,calendar_id: @calendar_id) end end
routes.rb
Rails.application.routes.draw do devise_for :users root to: "calendars#index" resources :calendars ,only: [:index, :new, :create, :show, :destroy] do resources :schedules , only: [:new, :create, :edit, :show, :update, :destroy] collection do get 'share_user' end member do get 'share_calendar' post 'share_calendar_create' end end end
試したこと
zipメソッドを使ってshare_calendarアクションのインスタンス変数(@calendarsと@share_calendars)を取得しようと試みましたが、上手く取得できませんでした。
補足情報(FW/ツールのバージョンなど)
Rails 6.0.3.5
ruby 2.6.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/04 07:37