2014-11-17 2 views
0

У меня есть следующие маршрут«Страница, которую вы искали, не существует». форма редактирования

namespace :dashboard do 
    get '/courses/:id/edit'      => 'courses#edit',    :as => :edit_course 
    put 'courses/:id/update'     => 'courses#update' 
end 

и это форма

= form_tag dashboard_edit_course_url(@course), :method => 'post', :multipart => true do 
    ... 

действие существо:

<form accept-charset="UTF-8" action="http://localhost:3000/dashboard/courses/54633b9fc14ddd104c004de3/edit" enctype="multipart/form-data" method="post"> 

Но когда я представить форму I получить эту ошибку:

The page you were looking for doesn't exist.

You may have mistyped the address or the page may have moved.

Я не понимаю, почему? Может ли кто-нибудь объяснить?

ответ

2

Альтернативный способ справиться с этим. В маршрутах пишут:

namespace :dashboard 
    resources :courses, only: [:edit, :update] 
end 

И ваш взгляд напиши:

= form_tag [:dashboard, @course], multipart: true do |f| 

Тогда вы будете использовать рельсы по умолчанию.

+0

Я получаю ту же ошибку, когда пытаюсь отредактировать запись – Jean

+0

Изменение маршрутов может потребовать перезагрузки сервера рельсов. В противном случае, как выглядит форма в html сейчас? – nathanvda

+0

приятное улучшение маршрутов! –

1

Ваша форма государства использовать post, но вы не имеете post route настроен.

Рельсы способ сделать это, чтобы отправить форму на пути обновления через put, так как вы updating a record:

= form_tag dashboard_update_course_path(@course), :method => 'put', :multipart => true do 

Кроме того, вы, вероятно, хотите use path instead of url.

Тогда просто назвать update route:

namespace :dashboard do 
    get '/courses/:id/edit' => 'courses#edit', :as => :edit_course 
    put '/courses/:id/update' => 'courses#update', :as => :update_course 
end 
+0

Я пытаюсь изменить форму на метод => 'put', но он всегда визуализируется с помощью сообщения. Ты знаешь почему??? – Jean

+0

В зависимости от того, какой браузер вы используете, он [может не поддерживаться] (http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web- браузеры). Вы также можете попробовать это с помощью 'post'. Это будет работать, но это не так корректно, как 'put'. –

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