ruby-on-rails - links - rails link_to params
agregar una clase a un link_to es romper el enlace (4)
Estoy usando link_to en RoR 3
Cuando lo uso así, funciona bien:
<%= link_to "Add to your favorites list",:controller =>
''favourite_companies'', :action =>''create'',
:company_id=>"#{@company.id}",
:company_name=>"#{@company.company_name}" %>
Pero me gustaría pasar en una clase también
Sin embargo, esto no está funcionando para mí. La clase funciona, pero rompe el enlace. ¿Algunas ideas?
<%= link_to "Add to your favorites list",{:controller =>
''favourite_companies'', :action =>''create''},
:company_id=>"#{@company.id}",
:company_name=>"#{@company.company_name}",
:class=>"ui-button-text button_text"} %>
Estoy usando un bloque link_to do-end, por lo que las soluciones anteriores anteriores no funcionaron para mí.
Si desea incrustar otras etiquetas en su etiqueta, puede utilizar el bloque link_to do-end.
<%= link_to favourite_companies_path(:company_id => @company.id, :another_url_param_here => "bar"), { :class => "ui-button-text button_text", :title=> "We can have more html attributes as well" } do %>
<i class="fa fa-star"></i>
<%= @company.company_name %>
<% end %>
En este caso es
<%= link_to path(url_params), html_options = {} do %>
<% end %>
La forma correcta de hacer lo que tienes es la siguiente:
link_to "Foo", { URL_FOR PARAMS HERE }, :class => "bar"
En cuanto a configurar el controlador y la acción manualmente de esta manera, bueno, es una mierda. Rails construye ayudantes de url para ti; Utilícelos y ahórrese tiempo, energía y agregue claridad, todo al mismo tiempo:
link_to "Foo", favourite_companies_path(@company), :method => :post
Lo que estás haciendo con la interpolación de cuerdas también es una mala idea ... es un desperdicio y un desorden sin ninguna razón en absoluto. Lo siguiente es lo mismo, simplemente mejor:
link_to "Foo", :company_id => @company.id, :company_name => @company.name
En cuanto a por qué su enlace no funcionó, si envolverlo en un div le ayudó, parece que tiene un problema con su estructura HTML, no con la sintaxis de link_to.
Tenga cuidado porque en Rails 5, los métodos anteriores todavía resultarán en una generación de URL incorrecta. El controlador y la acción se deben colocar en un hash literal para que funcione en Rails 5. Lo que tendrás debe ser algo como esto
<%= link_to "Add to your favorites list",
{ controller: "favourite_companies", action:"create"},
company_id: @company.id,
company_name: @company.company_name,
class: "ui-button-text button_text" %>
<%= link_to "Add to your favorites list",{:controller =>
''favourite_companies'', :action =>''create''},
:company_id=>"#{@company.id}",
:company_name=>"#{@company.company_name}",
:class=>"ui-button-text button_text"} %>
prueba esto
<%= link_to "Add to your favorites list", :controller =>
''favourite_companies'', :action =>''create'',
:company_id=>"#{@company.id}",
:company_name=>"#{@company.company_name}",
{ :class=>"ui-button-text button_text" } %>
Dado que: la clase debe estar en: html_options (haciendo referencia a la API)
link_to(body, url, html_options = {})