CouchDB/Sofa: Невозможно создать новый пост (из шаблона по умолчанию) с кнопкой сохранения

В настоящее время я изучаю CouchDB и использую книгу О'Рейли в качестве руководства для начала работы. Я довольно тщательно следил за этим, однако после работы с Софой книга требует от меня проверки того, что происходит, когда мы нажимаем "Сохранить" в нашем шаблоне редактирования. В книге сказано, что я должен увидеть успешный ответ (использует Firebug, когда кнопка запускает запрос Put), однако вместо этого я получаю "

{"error": "not_found", "reason": "отсутствует показ функции new.html в doc _design/ Sofa"}

Теперь я только начал читать на этой неделе, и я знаю, что ответ может быть очевидным, но если бы кто-то мог, по крайней мере, указать мне правильное направление (куда в Софу добавить, исправить ошибку, патч), это было бы здорово.

Первоначально я предположил, что мне нужно добавить "новую" функцию шоу, но я просто хотел получить совет, прежде чем углубляться в эту погоню за диким гусем.

извините, если это нубский вопрос.


{"couchdb": "Welcome", "uuid": "4d9b6082e16607a33dcbfdffb57503b5", "version": "1.6.1", "vendor": {"version": "1.6.1", "name": "Программное обеспечение Apache Фонд"}}

Скачал последнюю версию Софы с ( https://github.com/jchris/sofa)

1 ответ

Как решить проблему

Проблема в том, что к странице обращаются из:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit

Доступ к нему вместо:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/

(Имя вашей базы данных может отличаться от "myblogdb"). Обратите внимание на обратную косую черту.

Объяснение того, почему функция show, называемая "new", не нужна:

Возьмите следующий запрос к функции показа:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/This-is-a-second-post

Это вызовет функцию в edit.js и передаст документ с _id из This-is-a-second-postесли такой документ существует. Если документ не существует, как в случае

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/new.html

Затем edit.js устанавливает data объект передан Mustache.to_html иметь правильные поля для нового поста.

Почему это ломается в вашем случае

Когда функция редактирования шоу доступна через

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit

Пути родственников к скриптам больше не работают. Тогда сценарий, определенный в edit.html, больше не является правильным. В результате обработчик отправки

$("form#new-post").submit(function() { ...

больше не называется. Если бы это называлось return false в конце, что предотвращает отправку new.html.

Так как он не вызывается, new.html заканчивается POSTed, и это перенаправляет браузер на

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/new.html

которая указывает на несуществующую функцию show, что приводит к появлению сообщения об ошибке.

Другие вопросы по тегам