возможно ли как-то вызвать функцию 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.
С уважением,
Себастьян

У вас должен быть метод в контроллере, который будет отображать то, что вам нужно, если вы хотите это сделать. Другой способ сделать это - использовать блоки просмотра, например, в конце представления макета.
<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, а не в голове, но все же функция предупреждения не вызывается, когда я открываю страницу.
Приносим извинения за проблемы. Я исправлю свой ответ для использования в будущем. Рад, что смог помочь.