저는 새로운 레일 및 MVC입니다. 내 데이터베이스에 간단한 양식 및 중첩 된 양식 용 보석을 사용하여 중첩 된 양식을 저장하려고합니다. 양식을 제출하면 '상위'모델 만 생성되어 저장됩니다. 대단히 감사합니다.중첩 된 양식을 저장하지 마십시오.
'상위 모델'
class Diet < ApplicationRecord
belongs_to :coach
has_many :user_eat_diets
has_many :user, through: :user_eat_diets
accepts_nested_attributes_for :user_eat_diets
has_many :diet_composes
has_many :foods, through: :diet_composes
accepts_nested_attributes_for :diet_composes
end
'아이'모델 :
class DietCompose < ApplicationRecord
belongs_to :diet
belongs_to :food
end
'부모'컨트롤러 :
class DietsController < ApplicationController
def new
@diet = Diet.new
@diet.diet_composes.build
end
def create
@diet = Diet.new(diet_params)
if @diet.save
flash[:success] = "success"
end
end
def diet_params
params.require(:diet).permit(:name, :coach_id, :diet_composes_attributes)
end
end
'아이'컨트롤러 :
class DietComposesController < ApplicationController
def new
@diet_compose = Diet_compose.new
end
def create
@diet_compose = Diet_compose.new(diet_compose_params)
if @diet_compose.save
flash[:success] = "success"
end
end
def diet_compose_params
params.require(:diet_compose).permit(:quantity, :hour, :day, :food_id, :diet_id)
end
end
형태로보기 : 나는 레일 콘솔에서 명령
Diet_compose.all
을 수행 할 때
또한<%= simple_form_for @diet, :html => {:class => 'form-basic' } do |f| %>
<%= f.input :name %>
<%= f.input :coach_id %>
<%= f.nested_fields_for :diet_composes do |ff| %>
<%= ff.remove_nested_fields_link %>
<%= ff.input :hour %>
<%= ff.input :day %>
<%= ff.input :food_id %>
<%= ff.input :diet_id %>
<% end %>
<%= f.add_nested_fields_link :diet_composes %>
<%= f.button :submit %>
<% end %>
, 나는 오류 현재 여러 가지를 수정해야
LoadError: Unable to autoload constant Diet_compose, expected /home/tanaka/Desktop/E-xercite/app/models/diet_compose.rb to define it from (irb):8
감사합니다! 하지만 레일 4.0+에는 존재하지 않는 것처럼 "attr_accessible : diet_composes"모양을 제거해야했습니다. 다이어그램의 diet_id를 자동 설정하려면 어떻게해야합니까? 내가 만든 다이어트 ID와 동일하게 설정할 수 있습니까? – tanaka