現在railsで料理投稿を行いユーザーが投稿を行なった料理をカレンダーに投稿すると言うアプリを制作しています。
そこでユーザーが料理投稿するまでは上手くできましたが料理の内容をカレンダーに投稿すると言う所で息詰まっています。
解決したいこと
カレンダーに投稿するとカレンダーの内容とユーザーIDは保存できましたが料理IDがデータベース上に保存ができていないので保存できるようにしたい。
カレンダーに投稿画面の作成はできましたが
それをカレンダーに投稿するとカレンダーの内容ユーザーIDは保存できましたが料理投稿のデータがデータベース上に保存ができていません。
バリエーションのかけ方がおかしいのでしょうか?
ご教授いただけると幸いです。
カレンダーデータベース
ruby
1class CreateBlogs < ActiveRecord::Migration[6.0] 2 def change 3 create_table :blogs do |t| 4 t.string :title 5 t.text :content 6 t.datetime :start_time 7 t.references :user, foreign_key: true 8 t.references :tweet, foreign_key: true 9 10 t.timestamps 11 end 12 end 13end 14
カレンダー.rb
ruby
1class Blog < ApplicationRecord 2 belongs_to :user 3 has_many :tweets 4end 5
料理投稿.rb
ruby
1class Tweet < ApplicationRecord 2 validates :text, presence: true 3 belongs_to :user 4 has_many :comments 5 has_many :blogs 6 7 mount_uploader :image, ImageUploader 8 def self.search(search) 9 return Tweet.all unless search 10 Tweet.where('title LIKE(?)', "%#{search}%") 11 end 12end
カレンダーコントローラー
ruby
1class BlogsController < ApplicationController 2 3 def index 4 @blogs = Blog.all 5 @tweets = Tweet.all 6 end 7 def new 8 @blog = Blog.new 9 @tweet = Tweet.find(params[:id]) 10 end 11 12 def show 13 @blog = Blog.find(params[:id]) 14 end 15 16 def create 17 @blog = current_user.blogs.new(blog_parameter) 18 @blog.save 19 redirect_to blogs_path 20 end 21 22 def destroy 23 @blog = Blog.find(params[:id]) 24 @blog.destroy 25 redirect_to blogs_path, notice:"削除しました" 26 end 27 28 def edit 29 @blog = Blog.find(params[:id]) 30 end 31 32 def update 33 @blog = Blog.find(params[:id]) 34 if @blog.update(blog_parameter) 35 redirect_to blogs_path, notice: "編集しました" 36 else 37 render 'edit' 38 end 39 end 40 41 private 42 43 def blog_parameter 44 params.require(:blog).permit(:title, :content, :start_time) 45 end 46 47end
追記
カレンダーコントローラー変更点
rails
1 def create 2 @blog = current_user.blogs.new(blog_parameter) 3 @tweet = Tweet.new(user_id: current_user.id, image: params[:image]) 4 # params[:image]はフォームから飛んでくる画像のパラメータにする 5 @blog.save 6 @tweet.save 7 redirect_to blogs_path 8 end
カレンダー投稿画面 view
haml
1.blog-new 2 .blog-create 3 .carendar カレンダー投稿画面 4 = form_with(model: @blog, local: true) do |form| 5 .blog 6 .blog-new-create 7 .title 8 = form.label :タイトル 9 %br/ 10 = form.text_field :title 11 .time 12 = form.label :日付_時間 13 %br/ 14 = form.datetime_select :start_time 15 .content 16 = form.label :content 17 %br/ 18 = form.text_field :content 19 .blog-tweet 20 .blog-tweet-image 21 = image_tag @tweet.image.url 22 %br/ 23 .blog-tweet-title 24 = @tweet.title 25 %br/ 26 .blog-tweet-title 27 = @tweet.text 28 .submit 29 = form.submit 30 .link-return 31 = link_to 'トップページに戻る', tweets_path 32
tweetデータベース
rails
1class CreateTweets < ActiveRecord::Migration[6.0] 2 def change 3 create_table :tweets do |t| 4 t.string :title 5 t.string :text 6 t.string :image 7 8 t.timestamps 9 end 10 end 11end 12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/10 08:49
2020/08/10 08:54
2020/08/10 10:28
2020/08/10 10:42
2020/08/10 10:47
2020/08/10 11:14 編集
2020/08/10 15:47
2020/08/10 21:13
2020/08/11 02:02
2020/08/11 10:56
2020/08/11 12:29
2020/08/12 04:33
2020/08/12 10:15