Rails 3.1中未定义的局部变量或方法f

Nic*_*ick 1 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我一直在使用rails大约一个月,主要是爱它,有时真气(我还没有通过魔法调试特别有效).

我有一个画廊页面,从一个简单的页面扩展.每个图库页面都有许多图库图像.

class Gallery < Page
  belongs_to :page, :dependent => :destroy
  has_many :gallery_images, :dependent => :destroy
  accepts_nested_attributes_for :gallery_images
end

class GalleryImage < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "600x600>", :thumb => "100x100>" }
  belongs_to :gallery
end
Run Code Online (Sandbox Code Playgroud)

我试图通过页面控制器编辑图库.

  def edit
    @page = Gallery.find(params[:id])
    @house = @page.house
  end
Run Code Online (Sandbox Code Playgroud)

通过页面/ edit.html.erb我将库形式部分渲染

<%= form_for @page do |f| %>
  <p><b>Images</b></p>
    <% for image in @page.gallery_images %>
        <%= image.image.url(:thumb) %>
    <% end %>

  <%= f.fields_for :gallery_images do |builder| %>
    <% render :partial => "galleries/gallery_image_fields", :f => builder %>
  <% end %>

  <p><%= f.submit %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在画廊/ gallery_image_fields我有

<p class="fields">
  <%= f.label :image %><br />
  <%= f.file_field :image %>
</p>
Run Code Online (Sandbox Code Playgroud)

现在上面图像的网址打印出来,所以看起来关系正常,但是我得到了非常令人沮丧的错误信息.

未定义的局部变量或方法`f'用于#<#:0x210eb34>显示mypathblahblah/app/views/galleries/_gallery_image_fields.html.erb,其中第2行引发:

如果有人有一个显然会完美的解决方案,否则对于如何调试这个问题的一些想法也会很棒.我尝试输出调试构建器,但它并没有真正帮助我.

谢谢

And*_*tti 12

尝试改变:

<% render :partial => "galleries/gallery_image_fields", :f => builder %>
Run Code Online (Sandbox Code Playgroud)

成:

<% render :partial => "galleries/gallery_image_fields", :locals => { :f => builder } %>
Run Code Online (Sandbox Code Playgroud)

  • 尼克,我想如果你想使用:f =>构建器表单,你应该删除:partial =>部分. (3认同)
  • 谢谢!!!!这样可行.只是出于兴趣,在我的应用程序的另一部分我做的几乎完全相同的事情,并且f => builder语法工作正常.为什么不同? (2认同)