我目前正在修建在线课程,但我无法访问与某门课程相关的课程。
我的开发人员朋友为我解决了这个问题,但我不确定为什么这个代码有效,如果有不同的方式,更多的是Rails传统方式来编写这段代码。
<% @courses.each do |course| %>
<tr>
<td><%= link_to course.title, "courses/#{course.id}" %></td>
</tr>
<% end %>
我不确定这部分"courses/#{course.id}"
正在做什么。有没有办法用更传统的看似名称路径助手来写这个?
答案 0 :(得分:4)
它应与course_path(course)
这个电话只是为你找出路径。代码中的表达式只是构建了这个路径,将"courses/"
和课程的id放在一起(但使用插值,而不是连接)。
答案 1 :(得分:0)
正如Ursus的回答所解释的那样,courses/#{course.id}
通过使用字符串插值创建指向特定课程路径的URL。例如,如果@courses
变量是包含ID为[1, 2, 3]
的课程对象的数组,那么您将收到指向"course/1", "course/2", course/3"
的链接。
要替换该插值,您只需编写
即可<%= link_to course.title, course %>
它将创建与"courses/#{course.id}"
要了解有关字符串插值的更多信息,请从此处开始:http://ruby-for-beginners.rubymonstas.org/bonus/string_interpolation.html
答案 2 :(得分:0)
出于某种原因,你的朋友这样做了:
<td><%= link_to course.title, "courses/#{course.id}" %></td>
......而不是:
<td><%= link_to course.title, course %></td>
......我不明白为什么。第二个例子是你如何在Rails中使用链接。第一个示例不保护您免受将来可能的URL更改。