URL создания элемента Ruby on Rails - PullRequest
0 голосов
/ 19 апреля 2011

Я заметил небольшую проблему, которая вызывает меня в нескольких моих Rails-приложениях, которые я также видел в эпизодах Railscasts.

В качестве примера приложения блога, если пользователь просматривает «/ posts», ему представляется список сообщений. Когда пользователь хочет добавить сообщение, он посещает "/ posts / new", что нормально.

Моя проблема возникает, когда пользователь отправляет свою форму с ошибками проверки, отображается форма "/ posts / new", но с URL-адресом "/ posts". Например, в разделе проверки раздела регистрации пользователя Майкла Хартла *1005* Rails (рис. 8.7), вы можете видеть, что URL это просто "/ users", а не "/ users / new" как форма, которая отображается будет предлагать.

Есть какие-то маршруты, которые мне не хватает? Я не могу опубликовать код в данный момент, так как я не на своем рабочем компьютере (я опубликую его при необходимости позже), но насколько я вижу / помню, я использую методы, описанные в Учебное пособие Майкла Хартла .

Это не огромная проблема. Это просто немного раздражает меня, и любая помощь в том, почему это происходит, будет очень оценена. Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Это нормальное поведение.

Когда вы отправляете форму с новым объектом, вы отправляете запрос POST методу create, URL которого "/ posts" (см. rake routes). Если существуют какие-либо ошибки, этот метод создает новое действие без перенаправления на другие методы / URL. Он просто берет шаблон для действия new и предоставляет объекту с ошибками.

0 голосов
/ 19 апреля 2011

это потому, что по умолчанию рельсы используют подход RESTful.REST (передача состояния представления) (http://en.wikipedia.org/wiki/Representational_State_Transfer)

в REST у вас есть следующие http глаголы

GET

POST

PUT

DELETE

Поэтому, если учесть сообщения контроллера

index Действие по умолчанию GET

Пример: /ports/

вернет все порты

покажет действие по умолчанию GET

/ports/1

вернет сообщение с идентификатором 1

new action GET

/posts/new

вернет новый объект записи

edit is GET

/posts/1/edit

вернет объект публикации с идентификатором 1, для редактирования

create is POST

когда вы говорите

/ posts / с http POST, rails будет ожидать, что post-объект (поэтому вы видите только posts /) в URL (подчеркните, что он идет как POST-запрос)

обновление - это PUT

, когда вы говорите

/ posts / withhttp PUT, rails будет ожидать, что объект post будет редактировать (поэтому вы видите только записи /) в URL (подчеркивание, что оно идет как запрос PUT)

destroy is DELETE

destroy будет работать как запрос http DELETE

. Посмотрите также на этот пример

http://blogs.sitepoint.com/restful-rails-part-i/

HTH

Sameera

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...