Я пытаюсь создать приложение, в котором у меня есть События, и каждое событие будет иметь много продаж.Когда создается новая продажа, она автоматически получает идентификатор события, которому она принадлежит.Может кто-нибудь, пожалуйста, просмотрите это и скажите мне, если я делаю что-то не так, потому что я думаю, что способ создания simple_form для вложенной модели (Sale) немного неправильный.Также я не уверен, что так должно быть, или я сделал что-то не так, но когда я обращаюсь к вложенным детям, URL выглядит так:
.../events/4/sales/1
.../events/3/sales/1
.../events/5/sales/1
, но я ожидаю, что это будет так ?!
.../events/4/sales/1
.../events/4/sales/2
.../events/4/sales/3
Вот мой контроллер и модель для События
class Event < ApplicationRecord
has_many :sales, dependent: :destroy
end
.
class EventsController < ApplicationController
def index
@events = Event.all
end
def new
@event = Event.new
end
def create
@event = Event.new(event_params)
if @event.save
redirect_to @event
else
redirect_to events_path
end
end
def show
@event = Event.find(params[:id])
@sales = @event.sales
end
private
def event_params
params.require(:event).permit(:name, :comment, :event_disscount)
end
end
.Вот мой контроллер и модель для Продажи
class Sale < ApplicationRecord
belongs_to :event
has_many :sale_items
accepts_nested_attributes_for :sale_items, allow_destroy: true
end
.
class SalesController < ApplicationController
def new
@sale = Sale.new(event_id: params[:event_id])
@event = Event.find_by(id: params[:event_id])
end
def create
@event = Event.find(params[:event_id])
@sale = @event.sales.create(params[:sale].permit(:receipt_email))
if @sale.save
redirect_to @event
else
redirect_to new
end
end
end
rout.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
resources :events do
resources :sales
end
root 'events#index'
end
И вот как я использую simple_form для продажи (новый)
<%= simple_form_for([@event, @sale]) do |f| %>
Моя главная задача - «новое» действие в контроллере продаж, что является лучшим способом создания вложенного ресурса с идентификатором его родителя, а затем передать этот объект в simple_form?!
Заранее спасибо