Ayuda con un codigo

ola, veran tengo un codigo que no deja de joderm** y queria pedir ayuda
ya que hace 2 dias que llevo intentado solucionarlo

index_controller.rb:

def animes
@animes_pages, @animes = paginate :animes, :order => ‘nombre asc’
render :action => ‘lista_series’
end

lista_series.rhtml:

<% for anime in @animes -%>

<%= render_partial "lista_serie", anime %>
<% end %>
<%= pagination_links (@animes_pages) %>
<%= link_to 'Volver', :action => 'index' %>

_lista_serie.rhtml:

<%= link_to @animes.nombres, :action => 'articulo', :anime_id => anime %>

La parte de la base de datos(la de la tabla animes):

id => int
nombre => varchar
imagen => varchar

el error que me da es:
undefined method `nombres’ for #Array:0x25f8f60 en la linea dos, que
seria:
<%= link_to @animes.nombres, :action => ‘articulo’, :anime_id => anime
%>

Hola, no sé si he entendido lo que quieres hacer. ¿Es una acción animes
en el controlador que te lleve a una pagina en la que tengas un listado
de todos los animes y que cada nombre del anime sea un enlace a un
action articulo pasándole como parametro el id del anime? Si es así
puedes hacerlo de esta manera:

index_controller.rb:

def animes
@animes_pages, @animes = paginate :animes, :order => ‘name asc’
render :action => ‘lista_series’
end

Esto no cambia(bueno yo he llamado al atributo name pero es lo mismo).

lista_series.rhtml:

<%= render(:partial => “anime”, :collection => @animes) %>

<%= pagination_links (@animes_pages) %>

<%= link_to ‘Volver’, :action => ‘index’ %>

_anime.rhtml:

<%= link_to anime.name, :action => 'articulo', :anime_id => anime.id %>

He cambiado el nombre del partial a _anime.rhtml porque de esta manera
al hacer
<%= render(:partial => “anime”, :collection => @animes) %> le estamos
pasando para cada elemento de la colección @animes una variable que en
cada momento es anime y nos permite hacer en _anime.rhtml:

anime.name ó anime.id

es decir el nombre del partial se identifica con el nombre de la
variable que itera por la colección.

Si no es esto lo que quieres hacer espero que por lo menos te sirva de
guía.

Lo que tenías de @animes.nombres me parece extraño porque @animes es la
coleccion, es un array y estás accediendo a un metodo (nombres) que no
existe.

Pero igual lo he entendido mal y no quieres hacer lo que he hecho.

Un Saludo.

Crohno wrote:

ola, veran tengo un codigo que no deja de joderm** y queria pedir ayuda
ya que hace 2 dias que llevo intentado solucionarlo

index_controller.rb:

def animes
@animes_pages, @animes = paginate :animes, :order => ‘nombre asc’
render :action => ‘lista_series’
end

lista_series.rhtml:

<% for anime in @animes -%>

<%= render_partial "lista_serie", anime %>
<% end %>
<%= pagination_links (@animes_pages) %>
<%= link_to 'Volver', :action => 'index' %>

_lista_serie.rhtml:

<%= link_to @animes.nombres, :action => 'articulo', :anime_id => anime %>

La parte de la base de datos(la de la tabla animes):

id => int
nombre => varchar
imagen => varchar

el error que me da es:
undefined method `nombres’ for #Array:0x25f8f60 en la linea dos, que
seria:
<%= link_to @animes.nombres, :action => ‘articulo’, :anime_id => anime
%>

On Jan 5, 2007, at 1:36 AM, Crohno wrote:

<% for anime in @animes -%>

<%= render_partial "lista_serie", anime %>

Eso parece un bug, las partials no ven variables locales si no se las
pasas:

<%= render :partial => ‘lista_serie’, :locals => {:anime => anime} %>

<%= link_to @animes.nombres, :action => ‘articulo’, :anime_id =>

el error que me da es:
undefined method `nombres’ for #Array:0x25f8f60 en la linea dos, que
seria:
<%= link_to @animes.nombres, :action => ‘articulo’, :anime_id => anime
%>

En efecto @animes es una coleccion de animes, no es un objeto anime.
La coleccion misma no tiene nombre, tienen nombre sus elementos.
Puede que quieras poner esto:

<%= link_to h(anime.nombre), :action => ‘articulo’, :anime_id =>
anime.id %>

De hecho en Rails es mas idiomatico pasar el identificador asi

<%= link_to h(anime.nombre), :action => ‘articulo’, :id => anime %>

– fxn

Se los agradesco muhisimos a todos =) ahora ya me funcionan! muchas
gracias

lo que yo entiendo es que en la variable @animes tiene la lista con los
datos obtenidos de la base de datos, con lo que es lógico que no exista
el método .nombres
si lo que quieres es pintar el nombre de la serie, deberás llamar a
anime.nombre

saludos

On Fri, 2007-01-05 at 03:16 +0100, Xavier N. wrote:

lista_series.rhtml:

anime

Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

/**