Подтвердить что ты не робот

Добавить класс css в rails link_to helper

Я пытаюсь создать ссылку rails с помощью css, используя следующий код:

<%= link_to "Learn More", :controller => "menus", :action => "index", :class => "btn btn-inverse" %>

Я бы ожидал, что это создаст ссылку, которая выглядит так:

<a href="menus/" class="btn btn-inverse">Learn More</a>

Вместо этого рельсы отображают это -

<a href="/menus?class=btn+btn-inverse">Learn More</a>

У кого-нибудь еще была эта проблема/знать, что я делаю неправильно? Я знаю, что могу избежать этой проблемы, вручную создав тэг anchor, а не используя помощник, но мне было интересно, есть ли способ передать информацию класса css самому помощнику. Я использую Rails 3.2.6.

Спасибо!

4b9b3361

Ответ 1

У вас проблема с синтаксисом. Вместо этого попробуйте:

<%= link_to "Learn More", {controller: "menus", action: "index"}, class: "btn btn-inverse" %>

Некоторая документация для вас, чтобы продолжить с помощью link_to Helper

Говорят:

Будьте внимательны при использовании старого стиля аргумента, поскольку необходим дополнительный литеральный хеш:

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
# => <a href="/articles" class="article" id="news">Articles</a>

Оставив хеш, вы получите неправильную ссылку:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</a>

Я рекомендую вам использовать вспомогательный URL, созданный после настройки маршрутов. В вашем случае:

link_to "Learn More", menus_path, :class => "btn btn-inverse"

Небольшое напоминание о созданных помощниках:

# routes.rb
resources :users

# any view/controller
users_path #=> /users
edit_user_path(user) #=> /users/:id/edit
user_path(user) #=> /users/:id  (show action)
new_user_path(user) #=> /users/new

Ответ 2

Попробуйте использовать новое соглашение:

<%= link_to 'Learn More', 'menus#index', class: 'btn btn-inverse' %>

Ответ 3

Я решил свою проблему, кстати,

<%= link_to image_tag("imageexamplo.png", class: 'class or id examplo css'),{controller: "user" , action: "index"}%>

Ответ 4

Вот как я решил это, используя другой движок представлений, HAML на тот случай, если у такого же разработчика есть такая необходимость

%i= link_to "Add New Blog Post", user_post_edit_new_url(current_user), :class  => "fa fa-plus-circle"

Ответ 5

если у вас нет действия/маршрута контроллера, необходимого для ссылки, вы можете передать nil в качестве заполнителя и заставить классы применяться по мере необходимости

<%= link_to 'link verbiage', nil,  class: 'classes for action tag'%>