2010-04-26 21 views
7

¿Cómo puedo obtener la cadena de consulta y los parámetros de URL en una declaración de bloque link_to? En este momento, tengo este, que funciona:Rieles: link_to con bloque y GET params?

<%= link_to 'Edit', :edit, :type => 'book', :id => book %> 

Los trabajos anteriores, y salidas:

http://localhost:3000/books/edit/1?type=book 

Lo que queremos hacer es algo como esto:

<% link_to :edit, :type => 'book', :id => book do %> 
    ... 
<% end %> 

Pero el salidas de formato anteriores:

http://localhost:3000/books/edit/ 

Cuál es no es lo que estoy buscando ... Quiero que muestre una URL como en el ejemplo anterior.

¿Cómo puedo lograrlo?

Respuesta

0

Try follwing

<% link_to(:edit, :type => 'book', :id => book) do %> 
    ... 
<% end %> 

o para lograr misma URL Utilice

<% link_to(:action=>'edit', :type => 'book', :id => book) do %> 
    ... 
<% end %> 
13

link_to tiene las mismas opciones que url_for hace. Dicho esto, no existe la opción :type y realmente no acepta bloques, así que supongo que el motivo por el que funciona su segundo ejemplo es porque está ubicado dentro del alcance de una vista de libro. Según lo mencionado por Tom en una respuesta a esta respuesta, pasar un bloque a link_to se puede utilizar como reemplazo para el primer argumento (el texto del enlace).

Si el libro es un recurso, puede obtener el ayudante link_to para generar la URL que está buscando pasándole una de las rutas de recursos generadas automáticamente que Rails hace por usted. rake routes ejecutar antes de probar esto:

<%= link_to "Edit", edit_book_path(book) %> 

De lo contrario, puede indicar explícitamente qué controlador/acción que desea establecer el vínculo:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %> 

feliz piratería.

EDIT: Casi lo olvido, PUEDE agregar cadenas de consulta omitiéndolas en DESPUÉS de declarar el id del objeto al que está enlazando.

<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value") 

producto sería /books/1/edit?query1=value&query2=value. Alternativamente:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %> 
+1

El bloque parece ser una forma de capturar la entrada a otro dentro de los '' etiquetas. http://railsapi.com/doc/rails-v2.3.5/classes/ActionView/Helpers/UrlHelper.html#M002452 –

0

Rubí no sabe si va a enviar el bloque do ... end a link_to o book, y que envía a book, ya que está más cerca del bloque. book do ... end devuelve nil, por lo que se queda con link_to :edit, :type=>'book', :id=>nil. Necesitarás poner los parámetros entre corchetes, y mientras lo haces, lo volveré a escribir para que sea más comprensible con un controlador, acción, configuración de ID: link_to{:controller=>"books",:action=>"edit",:id=>book}do ... end

0

en mime_types.rb archivo de complemento:

Mime :: Type.register "text/aplicación",: Libro

+0

agregue un tipo para la solicitud –

Cuestiones relacionadas