Итак, вот моя проблема:
У меня есть приложение Rails 3 с фотографиями и пользователями.У пользователей есть много фотографий.Другие пользователи могут оценивать фотографии как "большие пальцы" или "большие пальцы".Существует модель голосования, которая обрабатывает это.У пользователей есть много голосов (по одному на фотографию), и у фотографий есть много голосов (по одному на пользователя), в двусторонней связи has_many: through.
Чтобы разрешить голосование большим пальцем вверх / вниз, у меня естьФорма, отправленная через ajax.Форма работает нормально, но я столкнулся с проблемой, которую я не совсем понимаю.
Когда пользователь впервые посещает фотографию, он еще не проголосовал ни большим, ни большим пальцами вверх,поэтому для этого пользователя нет объекта "голосовать" за эту фотографию.Поэтому часть формы, которая позволяет пользователю голосовать, отправит запрос «создать».
Этот запрос обрабатывается ajax.Он работает правильно, и статистика для обновления фотографий (через ajax) по мере голосования.
Пользователи также могут изменять свои голоса.Если пользователь посещает фотографию, за которую проголосовал, прежде чем он увидит форму для редактирования своего голоса.Они могут менять свой голос столько раз, сколько хотят, и страница обновляется так, как и ожидалось, с помощью ajax.
Проблема заключается в следующем:
После того, как пользователь ПЕРВЫЙ раз проголосует, форма должнабыть обновленным, чтобы он больше не пытался создать новый голос, а отредактировал существующий, только что созданный голос.В настоящее время это не работает.
Если пользователь впервые проголосует, а затем передумает, форма не будет отвечать, поскольку она все еще настроена в HTML для отправки запроса на создание, и модельне позволяет пользователю создавать более одного голоса за фотографию.
Таким образом, проблема заключается в том, что запрос ajax из формы должен обновлять форму, а не только статистику фотографий.
код для моего «create.js.erb» выглядит следующим образом:
$(function () {
$('table#content_score').replaceWith("<%= escape_javascript(render :partial => 'stats') %>");
$('form.vote_ballot').replaceWith("<%= escape_javascript(render :partial => 'ballot') %>");
});
Что должно произойти при обновлении формы voice_ballot - следовательно, с «new» на «edit»».Это случается, если вы обновляете страницу, но не если вы создаете новый голос через AJAX.Однако первоначальный щелчок обновляет статистику (первая строка заменяет «table # content_score»).
Итак, есть идеи или предложения?
Как получить форму для изменения«новый» для «редактирования» при создании контента с помощью ajax?Чего мне не хватает?
Спасибо!