ruby-on-rails - multiple - rails link_to controller action
Agregue los parĂ¡metros querystring a link_to (4)
En caso de que quiera pasar en un bloque, digamos, para un botón glyphicon, como se muestra a continuación:
<%= link_to my_url, class: "stuff" do %>
<i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>
Luego, pasar los parámetros de las querystrings podría lograrse a través de:
<%= link_to url_for(params.merge(my_params: "value")), class: "stuff" do %>
<i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>
Tengo dificultades para agregar parámetros de cadena de consulta para vincular_al UrlHelper. Tengo una vista de índice, por ejemplo, que tiene elementos de UI para clasificar, filtrar y paginar (a través de will_paginate). El complemento will_paginate administra la persistencia intra-página de los parámetros de la cadena de consulta correctamente.
¿Hay un mecanismo automático para agregar los parámetros de la cadena de consulta a una ruta con nombre dado, o debo hacerlo manualmente? Una gran cantidad de investigación sobre este constructo aparentemente simple me ha dejado desorientado.
Editar
Algunos de los desafíos:
Si tengo dos parámetros de cadena de consulta, clasificación y clasificación, ¿cómo establecer un valor específico para uno de estos en un link_to, mientras se preserva el valor actual del otro? Por ejemplo:
<%= link_to "0", profiles_path(:bucket => ''0'', :sorting=>?? ) %>
Si tengo varios parámetros querystring, bucket & sorting & page_size, y deseo establecer el valor en uno de estos, ¿hay alguna forma de incluir "automáticamente" los nombres y valores de los parámetros restantes? Por ejemplo:
<%= link_to "0", profiles_path(:bucket => ''0'', [include sorting and page_size name/values here] ) %>
El complemento will_paginate administra su variable de página y otras variables de cadena de consulta de forma automática. No parece haber un elemento UI automático para administrar el tamaño de página. Si bien he visto código para crear una lista de selección de tamaños de página, prefiero tener elementos A para esto (como SO). Parte de este desafío está relacionado con el n. ° 2, parte está relacionada con ocultar / mostrar este elemento de UI basado en la existencia / inexistencia de registros. Dicho de otra manera, solo quiero incluir enlaces de tamaño de página si hay registros en la página. Además, prefiero incluir automáticamente las otras variables de QS (es decir, página, depósito, clasificación), en lugar de tener que incluirlas por nombre en el enlace_a.
La API documenta en link_ para mostrar algunos ejemplos de cómo agregar querystrings a rutas con nombre y estilo antiguo. ¿Es esto lo que quieres?
link_to
también puede producir enlaces con anclajes o cadenas de consulta:
link_to "Comment wall", profile_path(@profile, :anchor => "wall")
#=> <a href="/profiles/1#wall">Comment wall</a>
link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails"
#=> <a href="/searches?query=ruby+on+rails">Ruby on Rails search</a>
link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux")
#=> <a href="/searches?foo=bar&baz=quux">Nonsense search</a>
Si desea mantener los parámetros existentes y no exponerse a ataques XSS, asegúrese de limpiar el hash de parámetros, dejando solo los parámetros que su aplicación puede enviar:
# inline
<%= link_to ''Link'', params.slice(:sort).merge(per_page: 20) %>
Si lo usa en varios lugares, limpie los parámetros en el controlador:
# your_controller.rb
@params = params.slice(:sort, :per_page)
# view
<%= link_to ''Link'', @params.merge(per_page: 20) %>
Si quieres el camino rápido y sucio y no te preocupes por el ataque XSS, utiliza params.merge
para mantener los parámetros anteriores. p.ej
<%= link_to ''Link'', params.merge({:per_page => 20}) %>
ver: https://.com/a/4174493/445908
De lo contrario, marque esta respuesta: params.merge y cross scripting