2013-06-03 3 views
0

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

Предположим, что эта страница находится в Dashboard # AddressBook. На этой странице я хочу, чтобы кнопка «Добавить профиль» загружала форму для «Лица» # «Новый» и позволяла ей отправлять без переключения страниц.

Индивидуальная модель вызывает подмодели, такие как адрес, которые имеют предустановленные параметры и, следовательно, требуют установки переменной в контроллере.

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

Как создать модель на странице для другого контроллера?

ответ

1

Вы можете визуализировать свою форму в частичном, и использовать опцию remote: true. Это пойдет на действие create другого контроллера, и вам нужно будет добавить format.js в блок respond_to. Затем создайте файл с именем create.js.erb в каталоге/views/profiles. Здесь вы будете использовать jQuery для изменения вашего представления, чтобы визуализировать новую информацию, которую вы только что создали.

1

Это не проблема, иметь несколько форм для различных контроллеров на одной странице:

<%= form_for @address do |f| %> 
... 
<% end %> 

<%= form_for Article.new do |f| %> 
... 
<% end %> 

Я понимаю, что ваша проблема в том, как предварительно загрузить «новый» объект для «внешнего» контроллера.
Мне нравится appoach с AJAX и ленивой вкладкой загрузки:

<div id="tabs"> 
    <ul> 
    <li><a href="#tabs-1">Own models form</a></li> 
    <li><a href="<%= new_article_path %>">new Articel</a></li> 
    </ul> 
    <div id="tabs-1"> 
    <%= render "form" 
    </div> 
</div> 

выбирающего второй вкладкой new Article вызывает Article#new, где вы можете инициализировать этот объект и визуализировать форму для него.
Не забудьте отобразить вид действия без макета.

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