Sé que esta es una pregunta trivial. Pero busqué en todo google pero no puedo encontrar una respuesta simple a esta pregunta.Ruby on Rails: cómo imprimir una cadena y dónde se muestra en?
Básicamente tengo una línea que dice <%= link_to 'Run it', :method => 'doIt' %>
en la vista, a continuación, en el controlador correspondiente, tengo el método doIt
de la siguiente manera:
def doIt
puts "Just do it"
end
sólo quiero comprobar que si hago clic en Ejecutar ella, dará salida a la cadena "Just do it". Ejecuté esto en localhost y no hay errores, pero no puedo encontrar el resultado "Just do it" en ninguna parte. No se muestra en la consola de rieles ni en el registro del servidor de rieles. Solo quiero saber dónde pone la cadena de salida, dónde encontrarla?
Ronda 2: Así que esto es lo que he intentado ....
Agregado esta línea en el index.html.erb (que es la raíz)
<%= link_to 'Run it', :method => 'do_it' %>
y en la url, es básicamente http://localhost:3000/ (desde que enruto el índice de control # como root)
La pantalla es solo un subrayado 'Ejecutar' que enlaza con 'do_it 'método en el controlador.
En el controlador, incluyo este método
def do_it
logger.debug "Just do it"
end
cuando hago clic en 'Ejecutar', el cambio url para http://localhost:3000/gollum_starters?method=do_it y en el development.log, se escribe el siguiente en él:
Started GET "/gollum_starters?method=do_it" for 127.0.0.1 at 2011-08-25 15:27:49 -0700
Processing by GollumStartersController#index as HTML
Parameters: {"method"=>"do_it"}
[1m[35mGollumStarter Load (0.3ms)[0m SELECT "gollum_starters".* FROM "gollum_starters"
Rendered gollum_starters/index.html.erb within layouts/application (3.6ms)
Completed 200 OK in 16ms (Views: 7.7ms | ActiveRecord: 0.3ms)
Además, probé todo el logger.error/info/fatal/etc ... y Rails.logger.error/info/fatal/etc, todos no imprimieron la línea "Just do it" en el desarrollo registro
@Paul: no toqué la carpeta o el archivo de entorno, supongo que de forma predeterminada cuando se crea una nueva aplicación de rieles, ¿está en desarrollo?
@Maz: Sí, tienes razón, solo estoy tratando de probar si se llama al método do_it. Para hacer eso, solo quiero imprimir algo en el controlador. No puedo pensar en ninguna manera más simple que simplemente imprimir una cadena, pero este problema me está haciendo miserable. Solo estoy usando textmate, no IDE.
Ronda 3:
@ Pablo THX mucho, pero me encontré con error
Mis rutas de archivos es ahora:
resources :gollum_starters
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
Mi index.html.erb es ahora :
<%= link_to "Do it", do_it_path %>
Mi gollum_starters_controller.rb
def do_it
logger.debug 'Just do it'
end
estoy recibiendo este error:
Couldn't find GollumStarter with ID=do_it
el error está en que aquí, 2ª línea:
def show
@gollum_starter = GollumStarter.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @gollum_starter }
end
end
Me pregunto ¿por qué ruta para mostrar? Cuando hago clic en do_it, en realidad va a localhost: 3000/gollum_starters/do_it que es correcto, pero aparentemente el error apunta al método show?
Ronda 4:
@ Pablo, i transferido recursos: gollum_starters abajo:
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
resources :gollum_starters
pero tiene este error (OMG quiero suicidarme),
Template is missing
Missing template gollum_starters/do_it with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "~/project_name/app/views"
:/
---------- respuesta a la Ronda 4 ------------
Básicamente como explica el error, no hay ninguna plantilla (es decir, una página web) para mostrar por lo tanto error lanzado. La solución es agregar un redirect_to, en este caso redirijo a root_url.
def do_it
logger.debug 'Just do it'
redirect_to(root_url)
end
Todo funciona ahora, "Simplemente hágalo" finalmente se emite a development.log y la consola del servidor rails.
Gracias Maz, Paul y Andrew por ayudarme. Aprender mucho.
John, consulte la explicación que se agrega a continuación. Te estás perdiendo la idea central de REST en Rails, y serás mucho más feliz con los rieles si lo entiendes. Buena suerte :) – Andrew
Yup mirándolo, gracias por la explicación detallada –