Вызвать функцию рельсов из jquery?

возможно ли как-то вызвать функцию rails или получить доступ к объекту rails из jQuery? Я бы хотел сделать что-то вроде:

jQuery(document).ready(function($) {
$('#mydiv').html("<%= @object.name %>");
});

ИЛИ ЖЕ

jQuery(document).ready(function($) {
$('#mydiv').html("<%= render :partial => "contacts" %>");
});

На данный момент я храню все свои файлы jQuery в своем application.js, который включен в мой макет. Ах да .... и я не использую Rails Edge.

С уважением,

Себастьян

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
5 162
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У вас должен быть метод в контроллере, который будет отображать то, что вам нужно, если вы хотите это сделать. Другой способ сделать это - использовать блоки просмотра, например, в конце представления макета.

<script type = "text/javascript">
<%= yield :footerjs %>
</script>

и в представлении сделайте что-то вроде:

<% content_for :footerjs do %>
jQuery(document).ready(function($) {
$('#mydiv').html('<%= escape_javascript(render :partial => "contacts") %>');
});
<% end %>

Вам необходимо убедиться, что фрагмент, который вы будете визуализировать, не будет содержать символов, которые могут вызвать ошибки javascript (например, завершение кавычек до конца строки и т. д.). Кроме того, некоторым браузерам не нравятся многострочные строки, поэтому вам тоже придется повозиться с этим.

@changelog: спасибо за ваш ответ.

Проблема, изображенная под строкой, была решена путем включения <%= yield :myjs %> в соответствующие теги javascript следующим образом:

<script type = "text/javascript">
<%= yield :myjs %>
</script>

Еще раз спасибо!!


Я пытался реализовать это так, как вы сказали, но у меня возникли некоторые трудности:

Я помещаю следующий блок content_for в начало моего файла show.html.erb:

<% content_for :myjs do %>
jQuery(document).ready(function($) { alert('hello'); });
<% end %>

В свой layout.html я включаю весь javascript следующим образом (здесь applications.js реализует некоторые общие функции jQuery):

<head>
...
<%= javascript_include_tag 'jquery', 'application' %>
<%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? %>
<% yield :myjs %>
</head>
<body>
...

Проблема в том, что мой javascript не отображается в исходном коде страницы, когда я его вызываю. Также не вызывается функция оповещения. Когда я вставляю <%= yield :myjs %> вместо этого (со знаком =), javascript отображается в начале моего блока body, а не в голове, но все же функция предупреждения не вызывается, когда я открываю страницу.

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

changelog 04.11.2008 18:21

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