добавление класса к link_to разрывает ссылку - PullRequest
29 голосов
/ 18 апреля 2011

Я использую link_to в RoR 3

Когда я использую его таким образом, он отлично работает:

<%= link_to "Add to your favorites list",:controller => 
            'favourite_companies', :action =>'create', 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}" %>

Но я бы тоже хотел перейти в класс

однако, это не работает для меня.Класс работает, но он разрывает ссылку.Есть идеи?

<%= 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"}  %>

Ответы [ 4 ]

60 голосов
/ 18 апреля 2011
<%= 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" }  %>

Поскольку класс: должен быть в: html_options (ссылаясь на API)

link_to(body, url, html_options = {})
31 голосов
/ 18 апреля 2011

Правильный способ сделать то, что у вас есть, таков:

link_to "Foo", { URL_FOR PARAMS HERE }, :class => "bar"

Что касается настройки контроллера и действий вручную, как это, ну, это дерьмо.Rails создает для вас помощники по URL;используйте их и сэкономьте немного времени, энергии и добавьте ясности, все сразу:

link_to "Foo", favourite_companies_path(@company), :method => :post

То, что вы делаете с интерполяцией строк, тоже плохая идея ... это просто расточительно и беспорядочно без всякой причинысовсем.Ниже приведено то же самое, но лучше:

link_to "Foo", :company_id => @company.id, :company_name => @company.name

Если ваша ссылка не работала, если ее обертывание в div помогло, это выглядит так, как будто у вас проблема с вашей структурой HTML, а не сСинтаксис link_to.

7 голосов
/ 20 января 2015

Я использую блок link_to do-end, поэтому вышеупомянутые предыдущие решения не работали для меня.

Если вы хотите встроить другие теги в свой тег, вы можете использовать блок 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 %>

В данном случае это

<%= link_to path(url_params), html_options = {} do %>
<% end %>
2 голосов
/ 27 июля 2016

Будьте осторожны, так как в Rails 5 приведенные выше методы все равно приведут к неправильной генерации URL. Контроллер и действие должны быть помещены в буквальный хеш, чтобы он работал в Rails 5. То, что у вас будет, должно быть примерно таким:

<%= 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"   %>
...