Problema con link


#1

Antes que nada agradecer a Raul el enlace que ha dejado en un post
anterior sobr las rutas que me ha sido muy interesante, dicho esto os
comento:

Ahora estoy intentando imprimir mis documentos, para ello me creo en
enviorement.rb
Mime::Type.register “text/htnl”, :print

Lo que busco es que al seleccionar un ticket aparezaca un link a
imprimir cuya ruta quede de la forma-----------> tickets/1.print

Es decir estando en el show del ticket 1 al plusar el enlace me llevara
a la direccion que comento. Asi solo deberia crearme el format print en
el show del controlador tickets que me llevara al layout de la
impresion, etc.

El problema que tengo es que con:
<%=link_to ‘Imprimir’, :controller=>‘tickets’,
:action=>‘show’ %>

No puedo elegir el formato que quiero, inicialmente habia puesto la
misma linea termnada con :format=>‘print’ no me enlaza a ese formato, no
consigo que el enlace lleve a …/tickets/3.print

No he encontrado ninguna opcion para poder hacer esto, alguien me
ilumina? acaso no puedo elegir el formato dnro del metodo?

Como siempre gracias y un saludo


#2

Hola,

Lo que busco es que al seleccionar un ticket aparezaca un link a
imprimir cuya ruta quede de la forma-----------> tickets/1.print

asumiendo que has configurado todo esto con rest y que tienes el ticket
1 en la variable @ticket, puedes obtener su ruta con el helper
formatted_ticket_path @ticket, :print

Si usas la tarea rake routes verás todas las rutas automágicas que se
crean al mapear recursos

suerte,


javier ramírez

…i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
…you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez


#3

Gracias Javier!!

Por cierto hay alguna forma de volcar la salida de rake routes a un
fichero de texto?? la consola de windows me las corta y no muestra
todas.

Si actualizo el codigo a :

<%=link_to ‘Imprimir’, formatted_ticket_path
@ticket, :print %>

Me aparece el siguiente error:

SyntaxError in Tickets#show

Showing tickets/show.html.erb where line #5 raised:

compile error
C:/InstantRails-2.0-win/rails_apps/daticket/app/views/tickets/show.html.erb:5:
syntax error, unexpected tIVAR, expecting kDO or ‘{’ or ‘(’
_erbout.concat “<span class=“right”>”; _erbout.concat((link_to
‘Imprimir’, formatted_ticket_path @ticket, :print ).to_s);
_erbout.concat “\n”
^
C:/InstantRails-2.0-win/rails_apps/daticket/app/views/tickets/show.html.erb:5:
syntax error, unexpected ‘)’, expecting tCOLON2 or ‘[’ or ‘.’
_erbout.concat “<span class=“right”>”; _erbout.concat((link_to
‘Imprimir’, formatted_ticket_path @ticket, :print ).to_s);
_erbout.concat “\n”
^

Extracted source (around line #5):

2:
3:
4:
5: <%=link_to ‘Imprimir’, formatted_ticket_path
@ticket, :print %>

6: <!-- ---------->
7:
8:

Mostrando Ticket

#######
De lo que me muestra la consola puedo leer la ruta que me interesa:

formatted_ticket GET /tickets/id.:format <:controller=>“tickets”
:action=>“show”>


#4

forma de volcar la salida de rake routes a un fichero de texto??

como en cualquier terminal que se precie (incluso el de windows, que ya
es decir) le puedes dirigir la salida estándar con >

rake routes > fichero_de_salida.out

<%=link_to ‘Imprimir’, formatted_ticket_path
@ticket, :print %>

Tiene pinta de que se lía con los paréntesis… en Ruby existe la
posibilidad de no usar paréntesis cuando no hay lugar a ambigüedad, pero
en la línea que le has puesto, no queda claro lo que pides, así que
necesitas usar paréntesis

<%=link_to ‘Imprimir’, formatted_ticket_path(@ticket, :print) %>

opcionalmente también podrías poner paréntesis en los argumentos del
método link_to

aprovecho para recomendarte que le des una vuelta a la sintáxis de ruby
y a las “cosas mágicas” que tienen y que no son estándar en otros
lenguajes de programación, en concreto el uso de paréntesis y la
notación de hashes, arrays y bloques. Por lo que llevo visto (y porque
lo viví en carne propia :wink: ) son las cosas donde la gente que viene de
otros lenguajes se lía más.

te vale la pena dedicarle un poquito de rato a eso porque te ahorrará
muchos errores de cabeza.

saludos,

javier ramírez

…i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
…you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez


#5

Muchas graxias!!! En efecto era asi!!

Respecto a :

aprovecho para recomendarte que le des una vuelta a la sint�xis de ruby
y a las “cosas m�gicas” que tienen y que no son est�ndar en otros
lenguajes de programaci�n, en concreto el uso de par�ntesis y la
notaci�n de hashes, arrays y bloques. Por lo que llevo visto (y porque
lo viv� en carne propia :wink: ) son las cosas donde la gente que viene de
otros lenguajes se l�a m�s.

Podeis recomendarme algun buen libro de consulta??

Por cierto, el tema me sigue dando que hablar, ahora ya consigo que el
navegador muestr la ruta /tickets/3.print al situar el cursor encima de
mi link, pero al pulsar a aprece el sighuiente error:

Template is missing

Missing layout layouts/print.print.erb in view path
C:/InstantRails-2.0-win/rails_apps/daticket/app/views

Es curioso por que el layout que busca tiene es print.print.erb cuando
deberia ser print.html.erb que es el que tengo yo.

En el controlador del ticket tengo esto:

def show
@ticket = Ticket.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @ticket }
  format.print  { render :layout => "print" } #lo llevo a mi layout 

print
format.pdf do #lo paso a pdf->actuo sobre ese ticket
send_dataTicketDrawer.draw(@ticket),:filename=>“ticket_“removed_email_address@domain.invalid_s+”.pdf”,
:type=>‘aplication/pdf’, :disposition=>‘inline’
end
end
end

y en enviorenment esto, me he dado cuenta escribiendo el post que en
codigo tenis “text/htnl”, al rectificarlo ya no me deja entrar ni en
mostrar, pero el error es el mismo.

Esta es la linea que añadi:
Mime::Type.register “text/html”, :print #le digo que print es de
formato texto


Por que buscara la plantilla con esa extensión??


#6

El Friday 21 November 2008 16:32:57 Jose vicente Ribera pellicer
escribió:

C:/InstantRails-2.0-win/rails_apps/daticket/app/views
format.html # show.html.erb
format.xml { render :xml => @ticket }
format.print { render :layout => “print” } #lo llevo a mi layout
print

Con format.print le estas pidiendo la vista “show.print.erb” con el
layout “print.print.erb”




Por que buscara la plantilla con esa extensión??


Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) removed_email_address@domain.invalid


#7

Gracias!! ya lo he solucionado, ahora en el boton pà ra mostrar ticket
directamente me abre el ticket me da la opcion de imprimirlo.

Por si le sirve a alguien:
-Quito Mime::type y el format print, lo que hago es en la vista del
Mostrar ticket poner la siguiente linea:

<%=link_to_function
“Imprimir”,“window.print();”%>|<%=link_to
image_tag(“regresar.png”,:alt=>“regresar”), tickets_path%>

Eso si como no quiero que salgan los encabezados del proyecto hay que
modificar el Ticket controler:

def show
@ticket = Ticket.find(params[:id])

respond_to do |format|
  format.html { render :layout => "show" }# Para que no me carge el 

layout por defecto que tiene botones que no quiero imprimir
format.xml { render :xml => @ticket }
#format.print { render :layout => “print” }


Me creo el layout show:

<%= stylesheet_link_tag 'show' %>
<%= yield %>

y ya puedo editar mi propio show.css sin botonerias ni nada para
guardarlo en la carpeta stylesheets.

Mil gracias por las ayudas, de verdad que da gusto solucionar los
problemas en un foro como este.

Un saludo