新手问题 有关 Rails 的 link_to ()

cassiuschen · 2013年10月13日 · 最后由 small_fish__ 回复于 2013年10月13日 · 3000 次阅读

想实现:

<a href="/course/edit"><span class="glyphicon glyphicon-wrench"></span></a>

在 erb 里写的:

<%= link_to '#' , edit_course_path(course) do %>
     <span class="glyphicon glyphicon-wrench"></span>
<% end %>

报错undefined methodstringify_keys' for "/courses/1/edit":String` 请问应该是哪里的错误呢…………

如果 <a> 标签的内容放在 block 里了,那么link_to 的第一个参数就是他个 href 了,所以想达到你上面所说的,应该是

<%= link_to edit_course_path(course) do %>
     <span class="glyphicon glyphicon-wrench"></span>
<% end %>

那么错误就应该是既然 # 作为 href, 那么 edit_course_path(course) 就相应的作为 options 也就是一个 hash 了,所以会调用 stringify_keys

<%= link_to edit_course_path(course) do %>
     <span class="glyphicon glyphicon-wrench"></span>
<% end %>

试试这样 话说 course 不应该是@course 么,还是说这是 partial 里的? 有 ctags 的话跳转去看看 link_to 的源码

#1 楼 @larryzhao 哦我明白了~~谢谢!已经解决啦~

我能说我以前是用 raw 来处理的吗? <%=link_to raw('<span class="glyphicon glyphicon-wrench"></span>'), edit_course_path(course) %> 感觉好蛋疼

#5 楼 @small_fish__ 用 slim 写就愉快多了,连 do 都省了

= link_to edit_coursepath(course)
  span.glyphicon.glyphicon-wrench

#5 楼 @small_fish__ 好主意…………我喜欢这样…………

#6 楼 @aptx4869 slim 原来能省略do?学习了

#6 楼 @aptx4869 明显符合常理。。呵呵。很好。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号