2009-05-21 3 views
19

http://weblog.rubyonrails.org/2009/1/26/nested-model-formsкак обрабатывать несколько моделей в виде рельсы

Это сообщение помогло в изучении, как обрабатывать несколько моделей в виде рельсы. Он работает до тех пор, пока модели вложены. что, если они не являются? скажем, у меня есть форма, где пользователь заполняет личные данные, детали адреса и кучу флажков, определяющих ее интересы. В этой единственной форме есть как минимум 3 таблицы, каков наилучший способ справиться с этим, не имея трех разных кнопок сохранения?

ответ

25

два варианта:

Первый является ActivePresenter, который работает хорошо для этого.

Во-вторых, это просто использовать fields_for:

<%= form_for @user do |f| %> 

    <%=f.label :name %> 
    <%=f.text_field :name %> 

    <%= fields_for @address do |fa| %> 
     <%=fa.label :city %> 
     <%=fa.text_field :city %> 
    <% end %> 

<% end %> 

Затем в контроллере, сохраните записи.

@user = User.new(params[:user]) 
@address = Address.new(params[:address]) 

ActivePresenter работает так хорошо, хотя.

Также найдено railsforum post через Google, и это хорошо работает.

+0

Второй вариант кажется очень простым (я уже догадались) я пришел через этот учебник, но это для вложенных моделей хоть. Один вопрос: что, если у меня было несколько адресов? – user85748

+0

Я действительно рекомендую избегать этого, если можно. Это совсем не нравится пользователю. Если вам просто нужно, взгляните на это первым: http://blog.new-bamboo.co.uk/2007/8/31/presenters-conductors-on-rails Вы также можете использовать массивы форм , но это не то, что я могу объяснить в комментарии, и это абстрактно. –

+0

избегая добавления нескольких адресов, которые вы имеете в виду? Это был просто пример, я не собираюсь этого делать. но могут быть случаи, когда это будет необходимо. например, когда пользователь вводит свои интересы (как пример, не может думать о чем-либо лучше) по одному в текстовом поле. – user85748

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