rails 6 Simple Calendarに記事投稿後、カレンダーに反映させたい。
ということですが現状
投稿画面に記事全てが反映されている。
haml
1= form_with(model: @blog, local: true) do |form| 2 .title 3 - @tweets.each do |tweet| 4 = tweet.title 5 = image_tag tweet.image.url 6 = tweet.text 7 .time 8 = form.label :start_time 9 = form.datetime_select :start_time 10 .content 11 = form.label :content 12 = form.text_field :content 13 .submit 14 = form.submit 15
それを記事一つに対してカレンダーに一つ投稿させるようにしたい。
※この状態からカレンダーに投稿するとこのようになります。
haml
1 2%p#notice= notice 3%h1 自分の日記 4%table 5 %thead 6 %tr 7 %th タイトル 8 %th 時間 9 %th{:colspan => "3"} 10 %tbody 11 - @tweets.each do |tweet| 12 %tr 13 %td= tweet.title 14 - @blogs.each do |blog| 15 %td= blog.start_time.strftime("%Y-%m-%d %H:%M") 16 %td= link_to 'Show', tweet 17 %td= link_to 'Edit', edit_blog_path(blog.id) 18 %td= link_to 'Destroy',blog_path(blog.id), method: :delete, data: { confirm: 'Are you sure?' } 19%br/ 20= link_to '日記をかく', new_blog_path 21= month_calendar events: @blogs do |date, blogs| 22 = date.day 23 - @tweets.each do |tweet| 24 %div 25 = link_to tweet.title, tweet 26
blogs_controller
rails
1class BlogsController < ApplicationController 2 3 def index 4 @blogs = Blog.all 5 @tweets = Tweet.includes(:user) 6 end 7 8 def new 9 @blog = Blog.new 10 @tweets = Tweet.includes(:user) 11 end 12 13 def show 14 @blog = Blog.find(params[:id]) 15 end 16 17 def create 18 @blog = current_user.blogs.new(blog_parameter) 19 if @blog.save 20 redirect_to blogs_path 21 else 22 redirect_to new_blog_path 23 end 24 end 25 26 def destroy 27 @blog = Blog.find(params[:id]) 28 @blog.destroy 29 redirect_to blogs_path, notice:"削除しました" 30 end 31 32 def edit 33 @blog = Blog.find(params[:id]) 34 end 35 36 def update 37 @blog = Blog.find(params[:id]) 38 if @blog.update(blog_parameter) 39 redirect_to blogs_path, notice: "編集しました" 40 else 41 render 'edit' 42 end 43 end 44 45 private 46 47 def blog_parameter 48 params.require(:blog).permit(:title, :content, :start_time) 49 end 50 51end
tweets_controller
rails
1class TweetsController < ApplicationController 2 before_action :set_tweet, only: [:edit, :show] 3 before_action :move_to_index, except: [:index, :show, :search] 4 5 def index 6 @tweets = Tweet.includes(:user) 7 end 8 9 def new 10 @tweet = Tweet.new 11 end 12 13 def create 14 Tweet.create(tweet_params) 15 end 16 17 def destroy 18 tweet = Tweet.find(params[:id]) 19 tweet.destroy 20 end 21 22 def edit 23 end 24 25 def update 26 tweet = Tweet.find(params[:id]) 27 tweet.update(tweet_params) 28 end 29 30 def show 31 @comment = Comment.new 32 @comments = @tweet.comments.includes(:user) 33 end 34 35 def search 36 @tweets = Tweet.search(params[:keyword]) 37 end 38 39 private 40 def tweet_params 41 params.require(:tweet).permit( :title, :text, :image).merge(user_id: current_user.id) 42 end 43 44 def set_tweet 45 @tweet = Tweet.find(params[:id]) 46 end 47 48 def move_to_index 49 redirect_to action: :index unless user_signed_in? 50 end 51 52end 53
長々となってしまい申し訳ございません。
解決したいことと致しましては
1、カレンダー投稿の際に現状、全て表示されているので選択した記事のみカレンダー投稿させたい。
2、カレンダーの投稿の際に全ての日付の所に投稿されている為、選択した日付の所のみ投稿表示させたい。
お手数ですがご教授頂けたら幸いです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。