2016-07-23 4 views
1

Я работаю над простым заказом. Вот мои маршрутыКак изменить путь/URL по умолчанию в маршрутах в Rails 4

resources :users do 
    get 'reservations', on: :member 
end 

resources :listings do 
    resources :reservations 
end 

Когда я пытаюсь сделать оговорку, действие reservations#new берет меня reservations_path. Конечно, я получаю ошибку, поскольку этот путь не существует. Я бы хотел, чтобы action new отвел меня в listing_reservations_path. Я прыгал, это будет сделано автоматически, так как resources :reservations находится во вложенных ресурсах. Я читал о маршрутах и ​​пробовал много вещей, но не могу найти какой-либо рабочий способ сделать это. Является ли это возможным?

+0

сначала проверьте маршруты .. через реки маршруты .. – Vishal

+0

, что вы подразумеваете под действием 'оговорки # new' принимает вас в' reservations_path'? Вы хотите сказать, что хелпер формы используется с контроллером и действием, поскольку «резервирование» и «новый» задают путь к 'reservations_path'? – aBadAssCowboy

ответ

1

Вы, кажется, неясно на nature of routes. Действие reservations#new существует независимо от любого маршрута. Маршрут - это всего лишь способ сопоставить URL-адрес пути к контроллеру и действию. Если вы пытаетесь сделать что-то вроде:

redirect_to controller: :resources, action: :new 

У вас будут проблемы, так как все ваши маршруты требуют определенного контекста. Вместо этого вам необходимо предоставить все, что помощник URL вы используете с контекстом:

redirect_to listing_reservations_path(@listing) 

link_to "New Reservation", new_listing_reservation_path(@listing)  

link_to "Reservation", [@listing, @reservation] 

 Смежные вопросы

  • Нет связанных вопросов^_^