2

我以这种方式组织项目:用户是主要资源,每个用户都有一个配置文件,每个配置文件都有一个位置,如下所示:

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

现在我必须建立一个表格来插入所有的个人资料信息,但也包括位置信息(地址等)。如果我编写以下代码,它不会关心位置。

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

有人对这种情况有什么建议吗?

肿瘤坏死因子

4

2 回答 2

5

如果您想在同一个表单中访问不同的模型,您可以使用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 %>
于 2011-04-11T11:07:17.067 回答
4

采用 :

form_for [@user, @profile, @location], :action => :update, :html => {:multipart => true}
于 2011-04-11T07:30:10.277 回答