Использование mislav_will_paginate в встраиваемом представлении JavaScript - PullRequest
0 голосов
/ 26 августа 2011

Попытка создать представление, которое может обслуживать набор разбитых на страницы результатов при внедрении (через js) в другой документ. Это вместо использования iframe. Код для вставки в родительский документ выглядит следующим образом:

<script type="text/javascript" src="http://MYWEBSITE/search?query=MYPARAMETERS&embed=true&per_page=20"/>

Представление (embed.html.erb), которое отвечает на это действие, выглядит следующим образом:

(function(){

document.write('<div id="df_search_results">')

<% @results.each do |result| %>
    document.write('<a href="<%= result.url %>" rel="lightbox[aj]" title="<%= result.title %>"><img src="<%= result.other_url %>" width="100" height="100" /></a>')
<% end %>

<% if @hits > @results.size %>
    document.write(<%= will_paginate @results %>)
<% end %>

document.write('</div>')

})()

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

1 Ответ

0 голосов
/ 30 августа 2011

Проблема в следующей строке:

document.write(<%= will_paginate @results %>)

Вывод метода will_paginate будет вставлен в ваш скрипт, но не будет правильно заключен в кавычки как строка, переданная методу write().Вам нужно избежать этого.

В Rails вы можете использовать escape_javascript метод :

document.write('<%= j will_paginate(@results) %>')

(обратите внимание на одинарные кавычки).

Если вы не используете Rails, вы можете скопировать его источник здесь .

...