2016-07-22 2 views
-1

Я пытаюсь создать точно то же самое, что и объяснено here.Rails - форма регистрации событий

Однако, используя

def new 
     @event = Event.find params[:event_id] 
     @registration = @event.registration.new 
    end 

я получаю 'неопределенный метод':

Started GET "/events/1/registrations/new" for ::1 at 2016-07-22 13:59:08 +0200 
    ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by RegistrationsController#new as HTML 
    Parameters: {"event_id"=>"1"} 
    Event Load (0.2ms) SELECT "events".* FROM "events" WHERE "events"."id" = ? LIMIT 1 [["id", 1]] 
Completed 500 Internal Server Error in 30ms (ActiveRecord: 0.5ms) 

NoMethodError (undefined method `registration' for #<Event:0x00000003e58bb8> 
Did you mean? registrations 
       registrations=): 
    app/controllers/registrations_controller.rb:4:in `new' 

Что мне не хватает?

+0

Что такое ассоциация betwee event и регистрации –

+0

Вы имели в виду регистрацию? –

ответ

0

Предполагая, что вы следовали за этим

#app/models/event.rb 
class Event < ActiveRecord::Base 
    has_many :registrations 
end 

#app/models/registration.rb 
class Registration < ActiveRecord::Base 
    belongs_to :event 
end 

Вам нужно изменить registration к registrations

def new 
    @event = Event.find params[:event_id] 
    @registration = @event.registrations.new 
end 

NoMethodError (неопределенный метод `регистрации» для # < Событие: 0x00000003e58bb8>

У вас есть решение в вашем вопросе;)

Возможно, вы имели в виду? регистрации

+0

Спасибо Дипак. Я изменил это, и теперь я получаю «NoMethodError в регистрации # new». Мои маршруты.rb говорят: «Rails.application.routes.draw do Ресурсы: события ресурсы: регистрация end' – Rook

+0

отправить журнал –

+0

ActionView :: Template :: Error (неопределенный метод' registrations_path 'для # <# < Класс: 0x00000003ef1548>: 0x00000003ece598>): 1: <% = form_for (@registration) do | f | %> – Rook