나는 stackoverflow를 처음 사용하므로 잘못 작성하면 사과드립니다.올바른 모델 설정
현재 프로젝트에는 많은 여행이있는 모델 드라이버가 있습니다. 그 여행에는 많은 마일리지, 백홀, 픽, 드롭과 시간이 있습니다. 새로운 여행을 만들 때 나는 그것을 운전자와 연관 지을 수 있기를 원하지만, 같은 페이지에서 마일리지, 백홀, 픽, 드롭 및 시간을 추가 할 수 있기를 원합니다. 나는 이것을 위해 나의 길을 어떻게 구조화해야하는지 확신 할 수 없다. 나는 여행에 대한 추가 모델을 추가하지 않고 운전자를위한 여행을 성공적으로 만들었지 만, 거기에서 나는 저음을 받았습니다. 나는 지금까지 여행과 관련 될 필요가있는 것에 대해서만 마일리지 모델/컨트롤러를 만들었습니다. 올바른 방향으로 나아가는 것은 매우 감사 할 것입니다.
드라이버 모델
class Driver < ApplicationRecord
has_many :trips
end
트립 모델
class Trip < ApplicationRecord
belongs_to :driver
has_many :mileages
accepts_nested_attributes_for :mileages
default_scope {order(date: :asc)}
validates :total, presence: true
validates :date, presence: true
validates_uniqueness_of :trip_number, :allow_nil => true, :allow_blank =>
true
end
마일리지 모델
class Mileage < ApplicationRecord
belongs_to :trip
end
트립 제어기
def index
@trips = Trip.all
end
def show
end
def new
@driver = Driver.find(params[:driver_id])
@trip = Trip.new
end
def edit
end
def create
@driver = Driver.find(params[:driver_id])
@trip = Trip.new(trip_params)
@driver.trips.create(trip_params)
respond_to do |format|
if @driver.trips.create(trip_params)
flash[:notice] = "Trip successfully created"
redirect_to new_driver_trip_path(@driver)
else
flash[:warning] = "Unable to create trip"
redirect_to new_driver_trip_path(@driver)
end
end
private
def set_trip
@trip = Trip.find(params[:id])
end
def trip_params
params.require(:trip).permit(:trip_number, :date, :driver_id, :total)
end
end
,
마일리지 컨트롤러
def new
@mileage = Mileage.new
end
def create
@mileage.create(mileage_params)
end
private
def mileage_params
params.require(:mileage).permit(:miles, :rate, :total)
end
end
end
드라이버 컨트롤러
def index
@drivers = Driver.all
end
def show
end
def new
@driver = Driver.new
end
def edit
end
def create
@driver = Driver.new(driver_params)
respond_to do |format|
if @driver.save
format.html { redirect_to @driver, notice: 'Driver was
successfully created.' }
format.json { render :show, status: :created, location: @driver }
else
format.html { render :new }
format.json { render json: @driver.errors, status:
:unprocessable_entity }
end
end
end
private
def set_driver
@driver = Driver.find(params[:id])
end
def driver_params
params.require(:driver).permit(:first_name, :last_name, :email, :unit)
end
end
감사합니다. 나는 그 보석에 총을 줄 것입니다. 매우 감사! –
도움이된다면 답을 승인하면 감사하겠습니다. –