2011-11-06 59 views
0

问题是,我有一个通常应该呈现当前车的照片,它这样做,但它使他们多次渲染的形式..像这样:我有5张照片对于car_id 2和屏幕我有5次这些照片显示。我的轨道形式3渲染多次照片的模型

如果我添加照片,那么这将是diplayed 6倍。什么是问题,我该如何解决它,我尝试了很多:替换它,取而代之,但没有。

这里是一块形式本身

<%= form_for @car, :html => { :method => :put }, :html => { :multipart => true } do |f| %> 
... 
... 
    <% for photo in @car.uploads %> 
    <div style="width:750px !important;"> 
      <%= f.fields_for :uploads do |photo_fields| %> 
      <%unless photo_fields.object.new_record? %> 
       <div style="width:150px;float:left;"> 
        <%= image_tag(photo_fields.object.photo.url(:thumb)) %> 
        <p><%= photo_fields.check_box :_destroy %> Delete item</p> 
       </div> 
      <% end %> 
      <% end %> 
     </div> 
.... 
... 
<% end %> 

和控制台:

Started GET "/cars/2/edit" for 127.0.0.1 at Sun Nov 06 22:50:17 +0200 2011 
    Processing by CarsController#edit as HTML 
    Parameters: {"id"=>"2"} 
    User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1 
    SQL (4.1ms) SHOW TABLES 
    Car Load (0.2ms) SELECT `cars`.* FROM `cars` WHERE `cars`.`id` = 2 LIMIT 1 
    CACHE (0.0ms) SELECT `cars`.* FROM `cars` WHERE `cars`.`id` = 2 LIMIT 1 
    Carname Load (0.2ms) SELECT `carnames`.* FROM `carnames` 
    Carmodel Load (0.2ms) SELECT `carmodels`.* FROM `carmodels` 
Rendered shared/_error_messages.html.erb (1.0ms) 
    Upload Load (0.2ms) SELECT `uploads`.* FROM `uploads` WHERE (`uploads`.car_id = 2) 
    Carname Load (0.2ms) SELECT `carnames`.* FROM `carnames` WHERE `carnames`.`id` = 1 LIMIT 1 
    Carmodel Load (0.2ms) SELECT `carmodels`.* FROM `carmodels` WHERE `carmodels`.`id` = 5 LIMIT 1 
Rendered uploads/_upload.html.erb (8.1ms) 
Rendered cars/_show.html.erb (2.7ms) 
WARNING: Can't mass-assign protected attributes: user_id 
Rendered cars/_form.html.erb (460.6ms) 
Rendered welcome/_sliderempty.html.erb (1.0ms) 
Rendered welcome/_footer.html.erb (0.5ms) 

感谢您的时间。

回答

1

只是删除for循环,fields_for已经遍历照片,所以你迭代两次,你得到的照片两次。

在回答您的评论:尽量明确地传递集合,如:

<%= f.fields_for :uploads, @car.uploads do |photo_fields| %>

所以在这里你去:

<%= form_for @car, :html => { :method => :put }, :html => { :multipart => true } do |f| %> 
... 
... 
    <div style="width:750px !important;"> 
      <%= f.fields_for :uploads, @car.uploads do |photo_fields| %> 
      <%unless photo_fields.object.new_record? %> 
       <div style="width:150px;float:left;"> 
        <%= image_tag(photo_fields.object.photo.url(:thumb)) %> 
        <p><%= photo_fields.check_box :_destroy %> Delete item</p> 
       </div> 
      <% end %> 
      <% end %> 
     </div> 
.... 
... 
<% end %> 
+0

没有,这导致一个未定义的方法'领域的#错误 – rmagnum2002

+0

我编辑我的答案,再次检查:) – sled

+0

顺便说一句:错误说你尝试调用'f.fields'而不是'f.fields_for'! – sled