Problema al crear una variable dentro de un controlador

**** Hola a todos, tengo en mi poder el libro Agile Web Develompent with
Ruby on Rails, y hay una parte en que una vez creado mi controlador
(Say),
dentro de éste se me dice que debo crear una variable con el objetivo de
que
me de la fecha y hora actuales, bien, para ello me piden crear una
variable
@time y ponerle como resultado Time.now, bien, originalmente se ve así
mi
controlador:

Código:

class SayController < ApplicationController
def Hello

end
end

Al crearle la variable @time se vería así:

Código:

class SayController < ApplicationController
def Hello

 @time = Time.now

end
end

El objetivo de eso es que luego, en mi fichero hello.rhtml , cada vez
que
yo ponga La fecha actual es <%= @time %> dentro del código simplemente
el
resultado va a ser *La fecha actual es (aquí es donde debe ir la fecha y
hora actuales) *, bien, eso jamás llega a suceder, sé que es una
pequeñez,
porque en el libro se ve como funciona todo bien, pero bueno, dado el
hecho
de que soy completamente un principiante, no sé por qué sucede, puede
que
sea muy fácil corregir eso y la equivocación sea mía, el hecho es que no
veo
donde me equivoque.

Ah!! este es mi hello.rhtml:

Código:

Hello, Rails!

la fecha actual es <%= @time %>.

Bien, en el navegador solo se ve la fecha actual es . Obviamente algo
no
esta funcionando bien.

Por favor, ayuda.

Gracias mil.

El Sábado, 18 de Noviembre de 2006 01:14, Alain Alemany Arana escribió:

def Hello
Debería darte otro tipo de problema, pero ese “def Hello”, ¿no debería
ser “def hello”?

 @time = Time.now

veo donde me equivoque.

la fecha actual es <%= @time %>.

Bien, en el navegador solo se ve la fecha actual es . Obviamente algo no
esta funcionando bien.

¿Puedes confirmar que la URL que escribes en el navegador es:
http://127.0.0.1:3000/say_controller/hello
?

Bueno Iñaki, antes que nada, gracias por responder, bien, sucede lo
siguiente, las cosas tal y como estan en el codigo (mayusculas
incluidas)
estan bien, y digo esto, porque llevo haciendo todo lo que el libro me
dice
y hasta ahora todo me ha salido bien y funcionado de la misma manera,
por
eso digo que no debe haber un error de sintaxis, la parte donde se
‘‘traba
el paraguas’’ es donde tengo que definir la variable @time.

Y la URL que se me da en el libro es http://127.0.0.1:3000/say/hello y
usando la que me distes, o sea, esta:
http://127.0.0.1:3000/say_controller/hello me salio el siguiente error:

Routing Error

Recognition failed for “/say_controller/hello”


Lo ironico de esto es que entiendo la filosofia que me plantean, o sea
al
crear la variable @time, que responde a Time.now , donde quiera que la
llame
va a ser lo mismo que poner Time.now , o sea obtener la fecha y hora
actual
y cuando pongo dentro del codigo La hora actual es <%= @time %>. lo que
me
sale en el navegador es La hora actual es . o sea, que no hace la
llamada o
no reconoce la variable, o no es valida, la verdad es que es esa la
parte
donde no entiendo y donde requiero de explicacion jejejejeje.

Gracias mil desde ya.

No te preocupes hermano, cualquiera se equivoca, ahora bien, no sabes
por
que me sucede esto??? sera algo que tengo mal??

El Sábado, 18 de Noviembre de 2006 01:38, Alain Alemany Arana escribió:

Y la URL que se me da en el libro es http://127.0.0.1:3000/say/hello y
usando la que me distes, o sea, esta:
http://127.0.0.1:3000/say_controller/hello me salio el siguiente error:

Routing Error

Recognition failed for “/say_controller/hello”

Me equivoqué al escribir la URL. :frowning:

El Sábado, 18 de Noviembre de 2006 00:38, Alain Alemany Arana escribió:

Bueno Iñaki, antes que nada, gracias por responder, bien, sucede lo
siguiente, las cosas tal y como estan en el codigo (mayusculas incluidas)
estan bien, y digo esto, porque llevo haciendo todo lo que el libro me dice
y hasta ahora todo me ha salido bien y funcionado de la misma manera, por
eso digo que no debe haber un error de sintaxis, la parte donde se ‘‘traba
el paraguas’’ es donde tengo que definir la variable @time.

Pues tiene toda la pinta de que el problema está en ese “def Hello”.
Estoy de
acuerdo con Iñaki: debe ser “def hello”. Los métodos se escriben con
minúsculas.

Cuando llega una petición, Rails intenta lo siguiente:

  1. invocar al método “hello” (que no está definido);
  2. si “hello” no está definido, llama a “method_missing”;
  3. si tampoco está definido, usa una vista que se llame como la acción
    (hello.rhtml, en este caso).

Al llegar al paso 3 sin pasar por el método “hello” (que no existe), te
encuentras con que @time no tiene valor ninguno.

Saludos.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs