2012-05-11 5 views
0

У меня есть форма для создания нового мероприятия для организации. Маршрутизации:Rails 3 Пути не работают, как ожидалось

resource :organisations do 
    resource :events 
end 

Когда я редактирую событие, на успех I пути назад к шоу действия в контроллере событий, как, например:

def update 
    @organisation = current_user.organisations.find(params[:organisation_id]) 
    @event = @organisation.events.find(params[:id]) 
    if @event.update_attributes(params[:event]) 
     # Handle a successful update. 
     flash[:success] = "Event updated" 
     redirect_to organisation_event_path 
    else 
     render 'edit' 
    end 
end 

Когда я создаю событие, я тоже хочу его перенаправлять на события показывают действие, осуществляется следующим образом:

def create 
    @organisation = current_user.organisations.find(params[:organisation_id]) 
    @event = @organisation.events.create(params[:event]) 
    if @event.save 
     flash[:success] = "Event added!" 
     redirect_to organisation_event_path 
    else 
     render 'new' 
    end 
end 

Однако это приводит следующее сообщение об ошибке: No route matches {:action=>"show", :controller=>"events"}

Это связано с тем, что URI не имеет идентификатора события/имени в нем, насколько я могу понять. Вероятно, это мое отсутствие понимания генерации пути, но как я могу достичь желаемого результата?

+0

Я думаю, что вам нужно передать идентификатор организации в к redirect_to organisation_event_path, потому что событие создается в организации, так организация признает по организации ид. –

ответ

0

Я не уверен, почему ваша первая перенаправляемая работала, но organisation_event_path потребует два аргумента, так как он создает путь из идентификаторов двух ресурсов - организации и события. Таким образом, вы должны назвать это так:

organisation_event_path(@organization, @event) 
Смежные вопросы