2016-10-12 3 views
0

Этот вопрос расширяется по моему ранее поставленному вопросу Rails combining RESTful methods in a new controller. С помощью моего веб-приложения rails пользователь регистрирует и создает проект. Для отслеживания конверсий я создаю вид getting_started, который позволит людям регистрироваться и создавать проект за одно действие (на одной странице).Rails аналогичные поля формы по нескольким точкам

У меня есть вопрос теперь, особенно для projects, я буду иметь поля формы, сидя на двух видах, а именно проект частичного _form, делающего на new и update взглядов. А во-вторых, форма для пользователя и детали проекта на экране getting_started. Мне кажется, что я дублирую много кода, а рельсы имеют более простой способ, которого я просто не вижу. Я также регулярно меняю поля project и хотел бы, чтобы одна точка обновила форму как для project_form, так и для getting_started_form.

Я читал, что частичные представления в частичных представлениях могут помешать работе, и я также не думаю, что вы можете просто включить поля формы в частичное и отобразить их в форме (выкинет ошибку, спрашивая, что «f» означает, что я предполагаю?).

Любые предложения, как лучше всего это сделать?

ответ

0

Я думаю, что вы ищете accepts_nested_attributes_for :project в классе пользователя и что-то вроде этого для вашей формы:

<%= form_for @user do |f| %> 
    <%= f.fields_for :project do |builder| %> 
    <%= render :partial => "project_form", :locals => { f: builder } %> 
    <% end %> 
<% end %> 

это позволит Вам использовать ту же форму в невложенных зрения с:

<%= form_for @project do |builder| %> 
    <%= render :partial => "project_form", :locals => { f: builder } %> 
<% end %> 
+0

Прохладный, дайте мне попробовать! Благодарю. Из интереса, делает ли кнопка 'f.submit' из части« projects_form », затем используется как кнопка отправки для нового' <% = form_for @user do | f | %> ... 'get_started form? Т.е.: мне не нужна кнопка отправки в форме для этого нового представления 'get_started', потому что она будет тянуть через кнопку отправки из частичного поля' fields_for: project ', которую мы рендерим? – Stephen

+0

Вам лучше оставить кнопку отправки в верхней форме. Поскольку вы используете вложенные атрибуты, ваша самая верхняя форма, которая будет отправлять данные пользователю, также отправит данные для вложенных дочерних форм. Подробнее [здесь] (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html). –

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