Rails - Как визуализировать js в ответе html

У меня есть действие «индекс», которое при вызове через ajax отображает index.js, который отображает частичное:

$("#content").html("<%= escape_javascript(render :partial => 'index') %>");

Как мне сделать то же самое в ответе html? Я пытался:

format.html { render "index.js" }

И хотя я не получаю никаких ошибок, код js, похоже, не работает, потому что частичное не отображается.


person 99miles    schedule 03.12.2010    source источник
comment
Почему вы хотите, чтобы ответ html возвращал файл javascript? Я не думаю, что браузер оценит это правильно, так как запрос ожидает html.   -  person Samo    schedule 03.12.2010
comment
@Samo: Иногда (например, jQuery) выполняется любой javascript, найденный в тегах script внутри html.   -  person Swanand    schedule 03.12.2010
comment
@Swanand: да, но 99miles возвращает файл javascript, который, я полагаю, содержит только javascript. Если в файле javascript есть теги script, то это теги html, поэтому файл не должен быть файлом .js.   -  person Samo    schedule 03.12.2010
comment
@Samo: Да, ты прав. Что вызывает мой вопрос к автору, 99miles: вы хотите визуализировать файл index.js, как вы показали, или вы хотите визуализировать частичное index, как в format.js?   -  person Swanand    schedule 03.12.2010


Ответы (2)


Вы пытались обернуть скрипт внутри тега <script>?

Ваш index.html.erb будет выглядеть так:

<script type="text/javascript">
  $("#content").html("<%= escape_javascript(render :partial => 'index') %>");
</script>
person Swanand    schedule 03.12.2010

Рендеринг по умолчанию — это ярлык для render :action => :action_name. Чтобы указать путь к файловой системе, используйте render :file => "index.js"

person Sam Coles    schedule 03.12.2010