ruby-on-rails - que - ruby on rails tutorial
Ruby/Rails-.ete iterator está imprimiendo una matriz completa al final del ciclo (2)
Es porque es lo que sucede cuando lo haces
def self.all_categories
Attraction.select("DISTINCT category")
end
Es crear un objeto de atracción con un atributo definido por su campo. Tu puedes hacer
def self.all_categories
Attraction.select("DISTINCT category").map(&:category)
end
Creo que lo que estoy tratando de hacer es bastante simple, y realmente no estoy seguro de por qué esto no está funcionando. Estoy usando Rails 3.
Esencialmente, estoy tratando de seleccionar los valores distintos de una columna en un modelo existente, e imprimirlos todos. En su mayor parte, esto funciona, pero el .each loop en mi vista también termina imprimiendo todo el conjunto al final del ciclo. (
Soy un modelo llamado Atracciones, y cada atracción tiene una Categoría (ahora la Categoría está codificada en la BD por simplicidad).
Este es el Modelo de atracción y un método de clase "all_categories" definido ...
class Attraction < ActiveRecord::Base
def self.all_categories
Attraction.select("DISTINCT category")
end
end
Este es el controlador de la atracción
class AttractionsController < ApplicationController
def index
@categories = Attraction.all_categories
@attractions = Attraction.find(:all)
end
def show
@attraction = Attraction.find(params[:id])
end
end
Este es el código en mi opinión que está causando problemas, no hay ciencia espacial, solo un iterador simple, ...
<%= @categories.each do |c| %>
<%= c.category %><br/>
<% end %>
Bastante simple, ¿verdad? Todo esto funciona bien, PERO esto es lo que veo cuando se ejecuta ese segmento de código:
Architecture
Art
Fashion
Music
[#<Attraction category: "Architecture">, #<Attraction category: "Art">, #<Attraction category: "Fashion">, #<Attraction category: "Music">]
¿Por qué se imprime la matriz al final? Todo lo que quiero es una lista de las categorías:
Architecture
Art
Fashion
Music
Obviamente, soy nuevo en Ruby / Rails, y he intentado buscar una solución para esto. ¿Hay algo obvio que me estoy perdiendo?
Aprecia cualquier ayuda.
# Change this line with an =:
<%= @categories.each do |c| %>
# ...to this:
<% @categories.each do |c| %>
Solo desea los efectos secundarios en el bloque del #each
método, no desea la interpolación del valor devuelto.