Хороший способ обрабатывать встроенную форму редактирования с использованием Rails и jQuery - PullRequest
5 голосов
/ 24 апреля 2009

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

Я пытаюсь придумать идеальный способ справиться с этим. Должен ли я создать скрытую форму редактирования для каждого элемента в списке и подключить ссылку редактирования, чтобы открыть ее, например:

<div>
    <a href="#">edit</a> Item One
    <div id="edit_1202" class="editform">Edit form goes here</div>
</div>
<div>
    <a href="#">edit</a> Item Two
    <div id="edit_2318" class="editform">Edit form goes here</div>
</div>

Или есть лучший способ извлечь данные и вставить HTML-код формы в нужное место? Помните, я использую jQuery, поэтому я не могу использовать помощники прототипа.

Спасибо!

Ответы [ 3 ]

6 голосов
/ 13 января 2010

Самый короткий путь к ответу, как это часто бывает, Райан Бейтс Railscasts . У него есть эпизод на с использованием jQuery с Rails . Хотя он специально не освещает это, достаточно изящное решение может быть получено из основ, которые он показывает.

В моем случае ссылка на редактирование будет переопределена для отправки ajax-запроса на сервер, который возвращает javascript для создания частичного с кодом редактирования формы. Легко, как только ты умеешь!

2 голосов
/ 24 апреля 2009

Я думаю, это то, что вы ищете: плагин jquery edit in place

http://davehauenstein.com/code/jquery-edit-in-place/example/ http://code.google.com/p/jquery-in-place-editor/

Я недавно использовал это, и это работает место. Посмотрите примеры в первой ссылке выше.

Если это действительно не то, что вы ищете, вы можете загрузить удаленную страницу с JQuery AJAX загрузки. Тогда вы сможете добавлять любые элементы формы, какие захотите.

http://docs.jquery.com/Ajax/load

$('.yourlinkid').click(function(){
   var id = $(this).attr('id');
   $("div#editThisDiv").load("/events/editAjax/" + id);
});
2 голосов
/ 24 апреля 2009

Я бы предложил использовать какой-нибудь плагин. Это довольно стандартная функция, зачем перекодировать то, что кто-то уже написал? Проверьте плагин jeditable .

После прочтения вашего комментария, да. Я бы, вероятно, сделал это с jQuery, как вы описываете, если бы вы хотели, чтобы все было сразу редактируемым. Я не думаю, что видел плагин, который обрабатывает более одного поля одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...