Ненавязчивый JS Ruby on Rails, нажмите, чтобы заменить содержимое div на элементы формы - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть простой фрагмент текста внутри тега div следующим образом:

<div id="text">Value 
<a href="/actual/link/incase/user/has/JS/turned/off" id="change_value"/>
</div>

У меня тогда есть этот javascript

$('change_value').observe('click', function(event){
  $("text").update("something here!");
  event.stop(); // Prevent link from following through to its given href
});

И это все здорово.Однако у меня есть два вопроса (первый - моя главная проблема):

  1. Как мне получить его, чтобы вместо обновления div с помощью «что-то здесь» он обновлял его элементами формы, т.е.тег формы, метка, текстовое поле и кнопка «отправить» изменения.Идея состоит в том, что пользователь сможет редактировать это поле на месте на странице.

  2. Где я должен разместить свой JS.В настоящее время у меня есть это в application.js и запустить функцию с window.onLoad ... это единственный способ?Полагаю, что так, как иначе, ноет, что не может найти элемент!

Спасибо всем!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2010

Вопрос 1: Вы можете сделать AJAX-вызов на любой контроллер / действие, которое вам нужно.Ваш контроллер получит искомый объект, а затем отправит шаблон js.erb.Шаблон js.erb может сделать что-то вроде этого:

$('#change_value').update('<%= render :partial => @object %>');

Тогда ваше частичное для этого типа объекта будет содержать нужную форму.Существует больше об этом подходе в различных эпизодах Railscasts.Эпизод 136 имеет хорошие примеры этого, но использует jQuery, поэтому вам придется адаптировать его к синтаксису Prototype (хотя, если вы не пробовали jQuery, я бы посоветовал попробовать).Эпизод 235 содержит множество полезных вещей, касающихся UJS, и показывает примеры как для jQuery, так и для Prototype.

Вопрос 2: Нет, он не должен идти в application.js.Вы можете создать другой файл js, специфичный для этого ресурса, и включить его в свой макет для этого ресурса.Если этот ресурс не использует макет, я думаю, что вы все равно можете включить его в свой вид.

0 голосов
/ 01 ноября 2010

Я думаю, что ваш лучший вариант - смотреть броски рельсов # 196 и # 197:

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

Эти броски объясняют, как создавать вложенныемодели в форме (3 уровня);часть 2 концентрируется на части javascript для таких действий, как добавление и удаление.

Хороший просмотр.

...