возникли проблемы с перезагрузкой частичных - PullRequest
0 голосов
/ 20 ноября 2011

с использованием rails 3.1, jquery v1.6.4, jquery-ujs

Я пытаюсь перезагрузить частичку, но она не работает должным образом:

<div id="album"> <%= render 'album_index' %></div>

<%=link_to 'Show All Albums', albums_path(:filter_by => 'all'), :remote => true%><br>
<%=link_to 'Show Old Albums', albums_path(:filter_by => 'old'), :remote => true%><br>

index.js.erb

$("#album").html('<%= escape_javascript(render 'album_index') %>');

когда пользователь впервые загружает 'index', <% = render 'album_index'%> будет правильно отображаться с возвращением ВСЕХ строк в моей модели альбома по умолчанию. когда пользователь нажимает на ссылку «Показать старые альбомы», действие jquery загружает «album_index», при котором в моем контроллере выполняется определенный запрос на основе параметра [: filter_by] == «old» и возвращается правильный результат, который перешли обратно в поле зрения.

Теперь проблема в том, что когда я нажимаю на ссылку, которая загружает «старый» фильтр, он не перезагружает существующий рендер, а выполняет его двойную рендеринг. Так что мое представление включает рендер 'album_index' с результатами из param [: filter_by] == "all" и ниже того, что 'album_index рендерит снова, но с результатами из param [: filter_by] == "old".

Я бы не стал делать двойной рендеринг, а перезагружал существующий фрагмент с новыми результатами.

есть предложения?

1 Ответ

0 голосов
/ 20 ноября 2011

Вы используете одинарные кавычки для внутренней и внешней строки во второй части этого:

$("#album").html('<%= escape_javascript(render 'album_index') %>');

Это приводит к тому, что html не является правильной строкой, что может быть причиной ваших проблем. Используйте двойные кавычки для внешней строки следующим образом

$("#album").html("<%= escape_javascript(render 'album_index') %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...