вложенная форма - PullRequest
       25

вложенная форма

2 голосов
/ 11 апреля 2011

У меня проект организован следующим образом: пользователь является основным ресурсом, у каждого пользователя есть один профиль, и у каждого профиля есть одно местоположение, как показано ниже:

 resources :users do    
    resource :profile, :controller => "profiles" do
      resource :location
end

Теперь мне нужно создать форму для вставкився информация профиля, но также информация о местоположении (адрес и т. д.).Если я напишу следующий код, он не будет заботиться о местоположении.

<%= form_for(@profile, :url=>{:action=>'update'}, :html => {:multipart => true}) do |f| %>

Есть ли у кого-нибудь какие-либо предложения для этой ситуации?

Tnx

Ответы [ 2 ]

5 голосов
/ 11 апреля 2011

Если вы хотите получить доступ к различным моделям в одной форме, вы можете использовать accepts_nested_attributes_for. Вот отличный скринкаст на эту тему: http://railscasts.com/episodes/196-nested-model-form-part-1

Ваш код должен выглядеть примерно так.

#profile.rb

accepts_nested_attributes_for :location

На ваш взгляд:

<%= form_for(@profile, :url=>{:action=>'update'}, :html => {:multipart => true}) do |f| %>
   <%= f.fields_for :location do |l| %>
     //location fields here, for example:
     <%=l.text_field :city %>
   <% end %>
<% end %>
4 голосов
/ 11 апреля 2011

использование:

form_for [@user, @profile, @location], :action => :update, :html => {:multipart => true}
...