2009-10-21 5 views
1

У меня есть модель под названием «Детали» и два метода контроллера new и create. Новый метод отображает форму для создания Details (в new.html.erb), которая отправляется в метод Create, который сохраняет его. (когда он успешно сохраняется, он отображает файл new.html.erb с подробностями.) Это работает так, как ожидалось.Публикация формы через всплывающее окно в Rails

Теперь я хочу отдельную страницу со ссылкой, чтобы заполнить эти данные. Я хочу, чтобы щелчок выполнял намеченную работу через всплывающее окно, например, с красным цветом. Когда вы нажимаете на эту ссылку, всплывающее окно должно отображать форму, чей submit должен опубликовать форму, и если она успешно выполнена, обновите исходную страницу. Если сообщение является несохраненным, то в той же форме должны отображаться ошибки. Что мне нужно сделать, чтобы он работал в Ror? Думаю, мне нужно кое-что поделать в new.js.rjs и, возможно, create.js.rjs, но я не могу понять, что положить в эти файлы.

ответ

0

Для этого я использовал link_to_remote_redbox, который при нажатии выбирает форму, визуализированную вызовом нового метода, в всплывающем списке. он подчиняется функции create, и теперь он работает. на самом деле я раньше делал это без аякса, и мне было трудно заставить его работать с ajax. проблема была решена после того, как я сделал отдельные частичные для ajax звонки и делал: reply_to do | format | format.js {визуализации: шаблон => 'Detail/ajax_template'} ... конец

я представил различные шаблоны как для создания и новых вызовов методов, используется: HTML => {: идентификатор => ' some-id '} в форме и: update => {: some-id}, чтобы заменить форму сообщением о ее правильной работе.

Так что я не знал, что мне нужны отдельные шаблоны для разных стилей форм, и мне нужно было использовать опцию: update, чтобы заменить форму, когда я задал вышеуказанный вопрос.

+0

Просьба привести небольшой пример того, как это сделать. Я пробую разные способы, но я потерпел неудачу. – 2011-09-07 10:47:28

2

Redbox обновляет домен страницы, чтобы добавить div в конце. Таким образом, ваша форма является частью главной страницы.
Итак, если вы добавите тег формы в этот красный ящик, вся ваша страница будет перезагружена, так как есть только одна.

Так вы добавите в любом месте страницы (желательно в конце):

<div id="redbox" style="display: none;"> 
    <%= form_for @details do %> 
     # Whatever form fields you want here 
    <% end -%> 
</div> 

Вы делаете ссылку, которая будет открывать RedBox:

<%= link_to_redbox 'Open The Details Form', 'redbox' %> 

Это будет отображать ваш RedBox с вашим форма.
И поскольку это та же страница, а не новые окна, когда вы будете проверять свою форму, она перезагрузит все это.

+0

Я хочу, чтобы форма отображалась только тогда, когда вы нажимаете, я не хочу, чтобы она приходила на время загрузки страницы. во всяком случае это может также работать, но я понял другой способ сделать это. благодаря! – umar

Смежные вопросы