我以这种方式组织项目:用户是主要资源,每个用户都有一个配置文件,每个配置文件有一个位置如下:
resources :users do
resource :profile, :controller => "profiles" do
resource :location
end
现在我必须构建一个表单,用于插入所有配置文件信息,但也包括位置信息(地址等)。 如果我编写以下代码,则不会关注该位置。
<%= form_for(@profile, :url=>{:action=>'update'}, :html => {:multipart => true}) do |f| %>
有人对这种情况有什么建议吗?
TNX
答案 0 :(得分: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 %>
答案 1 :(得分:4)
使用:
form_for [@user, @profile, @location], :action => :update, :html => {:multipart => true}