前提・実現したいこと
railsの練習として、ダイエットサイトを作成しております。
日記の中に、食事記録(別テーブル)を複数記録し日記の作成ができる仕組みを作成しております。
その際、日記の新規作成画面から食事記録新規登録画面に遷移し食事記録を登録したら日記の新規作成画面に戻り(その際に登録した食事内容を表示したい)、日記作成ボタンを押したら、食事記録と日記が作成できるようにしたいです。
発生している問題・エラーメッセージ
食事記録を日記を作成する前(日記新規画面)に作成したいのですが、日記との親子関係を関連付けしているためか、日記を作成しなければ登録できません。
現在、食事記録と同時に日記を作成するようにいたしましたが、本来は、食事記録を日記の新規ページに表示し日記の作成をしたいです。
長くなりましたが、教えていただけますでしょうか。
ruby
1class DiariesController < ApplicationController 2 3 def new 4 # viewへ渡すためのインスタンス変数に空のモデルオブジェクトを作成 5 @diary = Diary.new 6 @body_weight = BodyWeight.new 7 end 8 9 def create 10 # build=モデルオブジェクトを生成(newの別名) 11 @diary = current_user.diaries.build(diary_params) 12 @diary.save 13 14 # body_weight作成 15 @body_weight = @diary.build_body_weight( 16 user_id: current_user.id, 17 weight_record: params[:diary][:body_weight][:weight_record] 18 ) 19 @body_weight.save 20 21 redirect_to diary_path(@diary.id) 22 end 23 24 25
ruby
1 2class MealRecordsController < ApplicationController 3 4 def new 5 @meal_record = MealRecord.new 6 7 #binding.pry 8 end 9 10 def create 11 @meal_record = MealRecord.new(meal_record_params) 12 @diary = current_user.diaries.build 13 @diary.save 14 @meal_record[:diary_id] = @diary.id 15 @meal_record.save 16 redirect_to new_diary_path 17 end
ruby
1<h1>新規投稿</h1> 2 3<%= link_to "追加する", new_meal_record_path %> 4 5 6 7<%= form_with model: @diary do |f| %> 8 9 <h3>メモ</h3> 10 <%= f.text_area :remark %> 11 12 <%= f.fields_for @body_weight do |weight| %> 13 <h3>体重</h3> 14 <%= weight.number_field :weight_record, min: 0 %> 15 <% end %> 16 17 <h3>活動量</h3> 18 <%= f.select :activity_status, Diary.activity_statuses.keys.to_a, prompt: "選択してください" %> 19 20 <%= f.submit "投稿" %> 21 22<% end %> 23 24
ruby
1<h1>新規投稿</h1> 2 3<%= form_with model: @meal_record, url: meal_records_path do |f| %> 4 5 6 <h3>食事画像</h3> 7 <%= f.attachment_field :meal_image %> 8 9 <h3>タイトル</h3> 10 <%= f.text_field :title %> 11 12 13 <h3>本文</h3> 14 <%= f.text_area :body %> 15 16 <h3>いつ食べましたか</h3> 17 <%= f.select :intake_status, MealRecord.intake_statuses.keys.to_a, prompt: "選択してください" %> 18 19 <%= f.submit "追加" %> 20 21<% end %> 22 23
ruby
1class MealRecord < ApplicationRecord 2 3 # アソシエーション設定 4 belongs_to :diary 5 6 # attachmentメソッド(gem:refile)使用 7 attachment :meal_image 8 9 # enum機能の定義 10 enum intake_status: { その他: 0, 朝食: 1, 昼食: 2, 夕食: 3, 間食: 4 } 11 12end 13 14
ruby
1class Diary < ApplicationRecord 2 3 # アソシエーション設定 4 belongs_to :user 5 has_one :body_weight 6 has_many :meal_records, dependent: :destroy 7 8 # enum機能の定義 9 enum activity_status: { 低い: 0, 普通: 1, 高い: 2 } 10 11 end 12
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/10 03:01
2020/03/10 08:49
2020/03/11 09:38