###前提・実現したいこと
Ruby on Rails でサービスを構築しています。
has_one:belongs_toを使って、1対1の親子関係のデータを保存したいと思っています。
すでに2日間くらい手こずっていて、詰まってしまい心が折れそうになっています。
アドバイスいただけないでしょうか。
よろしくお願いします。
###発生している問題・エラーメッセージ
エラーメッセージ [ Unpermitted parameters: teacher_schedule ] とterminalで表示されてしまい、teacher_schedule以下にpermitしている内容が、DBにもデータが保存されていないようです。
###該当のソースコード
teachers_contoller.rb
1class Teacher::TeachersController < Teacher::ApplicationController 2 def show 3 @teacher = current_teacher 4 end 5 6 def edit 7 @teacher = current_teacher 8 @teacher_schedule = current_teacher_schedule 9 @teacher.build_teacher_schedule 10 end 11 12 def update 13 @teacher = current_teacher 14 if @teacher.update(teacher_params) 15 redirect_to teacher_teacher_path 16 else 17 render :edit 18 end 19 end 20 21 private 22 23 def current_teacher 24 Teacher.find(params[:id]) 25 end 26 27 def current_teacher_schedule 28 TeacherSchedule.find(params[:id]) 29 end 30 31 def teacher_params 32 params.require(:teacher).permit(:id, :first_name, :last_name, :image, :image_cache, :prefecture, :nationality, :age, :sex, :mother_language, :experience, :japanese_level, :japan_duration, :qualification, :education, :education_major, :education_name, :profession, :industry, :message, teacher_schedule_attributes: [:id, :monday1, :monday2, :monday3, :monday4, :tuesday1, :tuesday2, :tuesday3, :tuesday4, :wednesday1, :wednesday2, :wednesday3, :wednesday4, :thursday1, :thursday2, :thursday3, :thursday4, :friday1, :friday2, :friday3, :friday4, :saturday1, :saturday2, :saturday3, :saturday4, :sunday1, :sunday2, :sunday3, :sunday4, :memo]) 33 end 34end
teacher_schedule.rb
1class TeacherSchedule < ApplicationRecord 2 belongs_to :teacher 3 4 enum availability: { 5 OK: 0, 6 NG: 1 7 } 8end
teacher.rb
1class Teacher < ApplicationRecord 2 has_many :orders 3 has_many :users, through: :orders 4 has_one :teacher_schedule 5 accepts_nested_attributes_for :teacher_schedule, allow_destroy: true 6 7 devise :database_authenticatable, :registerable, 8 :recoverable, :rememberable, :trackable, :validatable 9 10 mount_uploader :image, ImageUploader 11end
edit.html.erb
1 <h1>Register your profile</h1> 2 3<%= form_for [:teacher, @teacher] do |f| %> 4<%= f.hidden_field :id %> 5<h2>About yourself</h2> 6 7<div class="row"> 8 <div class="col-lg-6"> 9 <%= f.label :first_name ,class: 'form_control'%> 10 <%= f.text_field :first_name, placeholder: "First Name", class: "form-control" %> 11 </div> 12 <div class="col-lg-6"> 13 <%= f.label :last_name ,class: 'form_control'%> 14 <%= f.text_field :last_name, placeholder: "Last Name", class: "form-control" %> 15 </div> 16</div> 17 <div class="form-group file"> 18 <%= f.label :image ,class: 'form_control'%><br> 19 <%= f.file_field :image, class: "form-control floating-label", placeholder: "画像アップロード" %> 20 </div> 21 22 <div class="col-lg-12"> 23 <%= f.label :prefecture ,class: 'form_control'%> 24 <%= f.select :prefecture, Teacher.prefectures.keys, placeholder: "Prefecture i.e.:Tokyo", class: "form-control" %> 25 </div> 26 27 <div class="col-lg-12"> 28 <%= f.label :nationality ,class: 'form_control'%> 29 <%= f.select :nationality, Teacher.nationalities, placeholder: "Nationality", class: "form-control" %> 30 </div> 31 32==== 似たような項目の入力欄が続く ===== 33 34 <%= f.fields_for [:teacher_schedule, @teacher_schedule] do |ts| %> 35 <%= ts.hidden_field :id %> 36 <div class="row"> 37 <div class="col-lg-4"> 38 <p class="text-center">Monday</p> 39 </div> 40 41 <div class="col-lg-2"> 42 <%= ts.label :Morning ,class: 'form_control'%> 43 <%= ts.select :monday1, TeacherSchedule.availabilities.keys, placeholder: "Monday", class: "form-control" %> 44 </div> 45 46 <div class="col-lg-2"> 47 <%= ts.label :Lunch_Time ,class: 'form_control'%> 48 <%= ts.select :monday2, TeacherSchedule.availabilities.keys, placeholder: "Monday", class: "form-control" %> 49 </div> 50 51 52==== 似たような項目の入力欄が続く ===== 53 54 <% end %> 55 <div class="form-group"> 56 <%= f.submit "送信", class: "btn btn-primary withripple" %> 57 </div> 58<% end %> 59 60
###試したこと
teachers_controllerのstrong parameteのところを teacher_schedule_attributes -> teacher_scheduleにすると [unpermited parameters] のエラーは表示されないのですが、
ActiveRecord::AssociationTypeMismatch in Teacher::TeachersController#update
というメッセージを受け取りエラーになってしまいます。
###補足情報(言語/FW/ツール等のバージョンなど)
ruby 2.4.0p0
Rails 5.0.5
詰まってしまって、辛い気持ちです。もしよろしければ助けていただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/18 05:44