将CSS类添加到Rails link_to帮助

我正在尝试使用css使用以下代码来设置Rails链接的样式:

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

我希望这会创建一个看起来像这样的链接:

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

相反,Rails正在渲染它-

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

其他人有这个问题/知道我在做什么吗? 我知道我可以通过手动创建锚标记而不是使用helper来避免此问题,但是我想知道是否有一种方法可以将css类信息传递给helper本身。 我正在使用Rails 3.2.6。

谢谢!

Blake asked 2019-11-18T17:28:29Z
5个解决方案
104 votes

您有语法问题。 尝试以下方法:

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

一些文档供您使用link_to Helper进一步介绍

他们说:

使用旧参数样式时要小心,因为需要额外的文字哈希:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</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
MrYoshiji answered 2019-11-18T17:29:24Z
4 votes

尝试新的参数约定:

<%= link_to 'Learn More', 'menus#index', class: 'btn btn-inverse' %>
Kamesh Prasad answered 2019-11-18T17:29:47Z
0 votes

我顺便解决了我的问题

<%= link_to image_tag("imageexamplo.png", class: 'class or id examplo css'),{controller: "user" , action: "index"}%>
Caetano answered 2019-11-18T17:30:11Z
0 votes

这就是我使用另一个视图引擎HAML解决此问题的方式,以防其他开发人员有此需要

%i= link_to "Add New Blog Post", user_post_edit_new_url(current_user), :class  => "fa fa-plus-circle"
d1jhoni1b answered 2019-11-18T17:30:34Z
0 votes

如果您没有链接所需的控制器操作/路由,则可以将nil用作占位符,并根据需要获取要应用的类

<%= link_to 'link verbiage', nil,  class: 'classes for action tag'%>
SMAG answered 2019-11-18T17:30:58Z
translate from https://stackoverflow.com:/questions/13016295/add-css-class-to-rails-link-to-helper