在不同模型的页面上使用嵌套模型表单作为部分

时间:2010-10-24 15:49:52

标签: ruby-on-rails ruby-on-rails-3 routes

我有一个PhotoAlbums的嵌套模型表单。该表单通过标准的HTML工作正常。但我需要做的是将它作为另一个页面中的部分内容而发生错误:“没有路由匹配

{:action=>"create", :controller=>"photo_albums"}" 

模特:

Projects 
  has_many :photo_albums 
PhotoAlbums 
  belongs_to :project 
  has_many :photos 
Photos 
  belongs_to :photo_album 
Controller: 
  def create 
    @project = Project.find(params[:project_id]) 
    @photoalbum = PhotoAlbum.create(params[:photo_album]) 
  end 

这是通过HTML加载和工作的工作表单:

<% form_for [:project, @photoalbum], :html => { :multipart => true } 
do |f| %> 
        <div class="field"> 
        <%= f.label :title %><br /> 
                <%= f.text_field :title %> 
        </div> 
        <% f.fields_for :photos do |builder| %> 
                <% if builder.object.new_record? %> 
                        <%= builder.label :photo, "photo File" %> 
                        <%= builder.file_field :photo %> 
                <% end %> 
        <% end %> 
<% end %> 

我遇到的问题是,将此表单呈现为部分 查看另一页面。我正在使用以下内容:

<% @photoalbum = PhotoAlbum.new %> 
<%= render :partial => "photo_albums/form",  :locals => 
{:photoalbum => @photoalbum}  %> 

我通过Rake Routes检查过,我确实在那里:

project_photo_albums POST / projects /:project_id /

photo_albums(.:format) 
{:controller=>"photo_albums", :action=>"create"} 

思考?谢谢

1 个答案:

答案 0 :(得分:0)

在您的表单中,您有:

form_for [:project, @photoalbum]

但似乎你的部分只获得@photoalbum变量。项目变量怎么样?