2011-01-12 8 views
8

Estoy perplejo por esta salida extraña en mi vista de Rieles. Aquí está mi modelo:¿Por qué esta vista de rieles escupe una matriz en bruto al final de un bucle cada do?

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

Aquí está la parte relevante de mi vista. He aislado el problema en este bloque de código, específicamente, pase lo que pase después de la última iteración y antes del final del ciclo <% end %>. Si hago un comentario sobre el texto real impreso en cada iteración, la matriz en bruto todavía se imprime.

<h2>Comments</h2> 
    <%= @post.comments.each do |comment| %> 
    <p> 
     <strong>Commenter:</strong> 
     <%= comment.commenter %> 
    </p> 
    <p> 
     <%= comment.body %> 
    </p> 
    <% end %> 

Aquí está la extraña salida (w/muestra comentarios.):

Comentario: Michael

Buen post.

Comentario: Michael

Buen post.

Comentario: Michael

prueba.

Comentario: John

Es la matriz todavía la impresión divertida?

[#<Comment id: 1, commenter: 
"Michael", body: "Good post.", 
post_id: 1, created_at: "2011-01-12 
03:51:20", updated_at: "2011-01-12 
03:51:20">, #<Comment id: 2, 
commenter: "Michael", body: "Good 
post.", post_id: 1, created_at: 
"2011-01-12 03:52:06", updated_at: 
"2011-01-12 03:52:06">, #<Comment id: 
3, commenter: "Michael", body: 
"Test.", post_id: 1, created_at: 
"2011-01-12 03:52:24", updated_at: 
"2011-01-12 03:52:24">, #<Comment id: 
4, commenter: "John", body: "Is the 
array still printing funny?", post_id: 
1, created_at: "2011-01-12 03:57:20", 
updated_at: "2011-01-12 03:57:20">] 

Por último, aquí es cómo está leyendo el log de desarrollo. Todos se ven así.

Started GET "/posts/1" for 127.0.0.1 at 2011-01-11 22:01:52 -0600 
    Processing by PostsController#show as HTML 
    Parameters: {"id"=>"1"} 
    [1m[36mPost Load (0.1ms)[0m [1mSELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1) LIMIT 1[0m 
    [1m[35mComment Load (0.3ms)[0m SELECT "comments".* FROM "comments" WHERE ("comments".post_id = 1) 
Rendered posts/show.html.erb within layouts/application (57.5ms) 
Completed 200 OK in 73ms (Views: 61.1ms | ActiveRecord: 0.4ms) 

¿Alguien sabe lo que está causando esto? Si esto fuera PHP, supongo que dejé print_r en algún lugar del código. Pero no lo es y no hice nada de eso.

Respuesta

23

Intente eliminar el signo igual en <%= @post.comments.each do |comment| %>. Los iguales solo son necesarios si el método en sí produce algo. En este caso, solo lo está usando para iterar una colección.

+1

Gracias. No entendí esa funcionalidad hasta ahora. ¡Útil! – Michael

+1

Gracias, tenía exactamente el mismo problema. – tpower

+0

Gracias, también me enfrento a la misma situación. – Adnan

Cuestiones relacionadas