2015-10-21 2 views
1

У меня есть это как мой маршрут обновления:рельсы redirect_to неправильно посылает мне поставить от маршрута обновления

def update 
    params.require(:player_id) 
    params.require(:id) 

    @draft = Draft.find(params[:id]) 
    redirect_to draft_draftees_path(@draft.id) 
end 

Всякий раз, когда он делает редирект он пытается сделать ставить вместо попасть указательным маршрут и так говорит: Нет совпадений в маршруте [PUT] "/ drafts/28/draftees"

Я не знаю, почему он пытается сделать ставку. Это потому, что это происходит из функции обновления? Я использую React на этой странице, так что это имеет к этому какое-то отношение? Как я могу перенаправить на этот маршрут индекса в маршруте обновления? Пожалуйста помоги!

[UPDATE] Вот мой routes.rb:

Rails.application.routes.draw do 
    get 'welcome/index' 

    get '/login' => 'sessions#new' 
    post '/login' => 'sessions#create' 
    get '/logout' => 'sessions#destroy' 

    get '/signup' => 'users#new' 
    post '/users' => 'users#create' 

    root 'welcome#index' 

    resources :users 
    resources :drafts do 
    resources :teams 
    resources :draftees 
    resources :players 
    end 
end 
+0

redirect_to просто послать 302 заголовок в браузере. Браузер выполнит GET. Вы должны заглядывать в нее дальше. Наверное, что-то еще. – Swards

+0

Пожалуйста, укажите ваш 'routes.rb'. –

ответ

0

Изменить

redirect_to draft_draftees_path(@draft.id) 

в

redirect_to draft_draftees_path(@draft) 

, как она будет проходить полный проект экземпляра пути призывники. запрос пут формируются потому, что вы передаете @ draft.id на путь призывников, что приводит к требованию, как этого

/drafts/:draft_id/draftees/:id 

UPDATE: Поскольку вы используете вложенные ресурсы, то есть может быть 2 возможности перенаправление.

  1. Перенаправление /проекты /: draft_id/призывники который будет показывать все призывники для конкретного проекта.
  2. Перенаправление на /drafts /: draft_id/draftees /: id, в котором отображается обновленный призывник.

Для достижения второй вам нужно перенаправить, как:

redirect_to(draft_draftees_path(@draftee.draft, @draftee) 
+0

Спасибо за помощь! Но я хочу добиться первого, но как получить маршрут. Он пытается сделать это как put –

+0

'redirect_to draft_draftees_path (@draft)' должен делать то, что вы ожидаете, если он все еще выполняет запрос put, тогда попробуйте выполнить запрос CURL, возможно, проблема связана с React. –

+0

Когда я сделал запрос на завивание, похоже, что он сработал, потому что он дал мне html для страницы, на которую я пытаюсь перенаправить. Означает ли это, что это проблема с реакцией? –

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