将css类添加到rails link_to helper

Bla*_*ake 55 ruby-on-rails

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

<%= link_to "Learn More", :controller => "menus", :action => "index", :class => "btn btn-inverse" %>
Run Code Online (Sandbox Code Playgroud)

我希望这会创建一个如下所示的链接:

<a href="menus/" class="btn btn-inverse">Learn More</a>
Run Code Online (Sandbox Code Playgroud)

相反,rails正在渲染这个 -

<a href="/menus?class=btn+btn-inverse">Learn More</a>
Run Code Online (Sandbox Code Playgroud)

有没有其他人有这个问题/知道我做错了什么?我知道我可以通过手动创建锚标记而不是使用帮助程序来避免这个问题,但我想知道是否有办法将css类信息传递给帮助程序本身.我正在使用Rails 3.2.6.

谢谢!

MrY*_*iji 104

你有语法问题.试试这个:

<%= link_to "Learn More", {controller: "menus", action: "index"}, class: "btn btn-inverse" %>
Run Code Online (Sandbox Code Playgroud)

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

他们说:

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

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
# => <a href="/articles" class="article" id="news">Articles</a>
Run Code Online (Sandbox Code Playgroud)

离开哈希会给出错误的链接:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</a>
Run Code Online (Sandbox Code Playgroud)

我建议您使用路由配置后生成的URL帮助程序.在你的情况下:

link_to "Learn More", menus_path, :class => "btn btn-inverse"
Run Code Online (Sandbox Code Playgroud)

关于助手产生的一点提醒:

# 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
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试新的参数约定:

<%= link_to 'Learn More', 'menus#index', class: 'btn btn-inverse' %>
Run Code Online (Sandbox Code Playgroud)