ror rails links link_to link how _blank ruby-on-rails link-to

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 = {})