Добавление класса в link_to нарушает связь
Я использую 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"} %>
Ответы
Ответ 1
<%= 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 = {})
Ответ 2
Правильный способ сделать то, что у вас есть, выглядит следующим образом:
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.
Ответ 3
Я использую блок 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 %>
Ответ 4
Будьте осторожны, потому что в 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" %>