Я пытаюсь сделать это подписчиком, подчиненным определенному событию
со следующим URL в каждом примере:
http://localhost:3001/events/1/subscribers/new
но я не знаю, как связать event_id при создании нового подписчика
на данный момент я получаю эту ошибку:
Couldn't find Event with 'id'=
в маршрутах:
resources :events do
resources :subscribers #url/events/:events_id/subscribers/new
end
resources :events
root 'events#index'
в контроллере подписчиков:
def show
end
# GET /subscribers/new
def new
#puts "Look for me in console\n"
#puts params.inspect
@event = Event.find(params[:events_id])
@subscriber = @event.Subscriber.new
end
# GET /subscribers/1/edit
def edit
end
# POST /subscribers
# POST /subscribers.json
def create
@event = Event.find(params[:order_id])
@subscriber = @event.Subscriber.new order_params
#@subscriber = Subscriber.new(subscriber_params)
respond_to do |format|
if @subscriber.save
SubsMailer.new_subscriber(@subscriber).deliver
format.html { redirect_to @subscriber, notice: 'Subscriber was successfully created.' }
format.json { render :show, status: :created, location: @subscriber }
else
format.html { render :new }
format.json { render json: @subscriber.errors, status: :unprocessable_entity }
end
end
end
в new.html.erb:
<h1>New Subscriber</h1>
<%= render 'form', subscriber: @subscriber %>
<%= link_to 'Back', subscribers_path %>
модель ассоциации:
event.rb:
class Event < ApplicationRecord
has_many :subscribers, dependent: :destroy
end
subscriber.rb:
class Subscriber < ApplicationRecord
belongs_to :event
validates :email, presence: true,
format: /\A\S+@\S+\z/,
uniqueness: { case_sensitive: false }
end