使用 Coffeescript 将表格行转换为 Rails 中的链接
Making a table row into a link in Rails using Coffeescript
这与以下问题有关,但我想使用coffeescript而不是javascript来与Rails 4中的默认值进行比较。
起点是回答前面问题时提供的代码:在 Rails 中将表行转换为链接
视图 ERB 代码包含具有以下代码的表生成器:
<% @songs.each do |song| %>
<tr data-link="<%= edit_song_path(song) %>">
<td><%= song.Name %></td>
<td><%= song.Group %></td>
</tr>
<% end %>
<tr data-link="<%= edit_song_path(song) %>">
行基于上述链接问题中给出的答案。
我在歌曲中有以下内容.js.coffee文件:
$("tr[data-link]").click ->
window.location = this.dataset.link
这是我在Mark Berry的回答中对javascript的翻译。我也尝试了其他建议,例如window.location = $(this).data("link")
。
加载页面时,表行不可单击。如果我将设置window.location
的操作替换为警报,则在页面加载时而不是在用户单击表格行时收到警报对话框。
上面的咖啡脚本代码是歌曲.js.coffee文件中的唯一代码。我是否缺少任何需要包裹在代码中的内容?
部分答案:按照第一条注释中的建议在原始 coffeescript 代码之前添加$ ->
确实会使表行可以选择一次。我相信从其他阅读中,美元符号变量已被制成jQuery的别名(一个例子是在The Little Book on Coffeescript:http://arcturo.github.io/library/coffeescript/04_idioms.html 的成语章节中)。
从而显示编辑页面,但如果用户返回页面,使用浏览器上的后退按钮或返回页面的链接,则无法再选择表行。
新的咖啡脚本代码是:
$ ->
$("tr[data-link]").click ->
window.location = this.dataset.link
上面的代码是从javascript到coffeescript的正确翻译吗?我对这两种脚本语言都很陌生。
在Rails 4 中使用 coffeescript 制作可点击的表格行是否有不同的答案?
谢谢。
是的,您发布的代码是正确的翻译。 "jstocoffe.org"是一个很好的网站(尽管报告了一些错误),您可以使用它将JavaScript转换为CoffeeScript,反之亦然。
我不确定为什么它不起作用,因为您说表格行变得"不可点击",因为您在@muistooshort的建议后发布的代码应该有效。 我这么说的原因是因为你没有在这里操作 DOM,当文档准备就绪时,你已经将 click 事件附加到具有 data-link
属性的表行(这是$ ->
),这应该按预期工作,因为后退按钮和整页刷新重新加载 DOM。
对于动态添加的内容(或者在前面提到的 DOM 操作的情况下),您需要使用 jQuery on 方法(替换旧的实时方法)通过父级或 DOM 树中更靠后的元素将事件绑定到"选择器"。 阅读jQuery的"on"方法,该方法不仅对此问题有用,而且对您将要处理的任何未来事件处理都很有用。
对于此问题,您可以尝试以下操作:
$ ->
$(document).on 'click', 'tr[data-link]', (evt) ->
window.location = this.dataset.link
希望这有帮助。
- 在Rails中第一次单击后禁用链接,Coffeescription
- 通过Rails中的自定义Jquery对话框处理链接的确认
- 在从ruby on rails中的资产管道加载的布局上链接Javascript函数
- 使用 rspec/Capybara 找到 Rails 测试链接,但在单击时未生成表单
- Rails 4 涡轮链接导致 html 画布在 iPad 上消失
- Rails 4.2 - 使用 Javascript 创建操作的链接导致 302
- 如何在Ruby on Rails中自动将_blank添加到锚链接
- Rails 3 在 onclick 上创建一个
做一个 ajax 与 :remote => true 链接相同 - Rails,AJAX:根据以前单击的链接呈现新的link_to
- 涡轮链接:Rails 4 显示慢速页面进度的方式是什么?
- Rails 应用程序 - jQuery Document.ready在单击链接时不调用,但在新选项卡中打开或刷新时工作
- Ruby-on-Rails JavaScript 未在链接上加载
- 使用 Coffeescript 将表格行转换为 Rails 中的链接
- Rails 4涡轮链接页面:用JS加载
- rails应用程序不会在youtube链接中添加“;嵌入”;
- 带有Rails event.id的完整日历模式链接
- Rails 4:JS没有'我关注链接时无法工作
- 我如何制作一组<td>s可在Rails中链接
- Rails 3 JS远程链接打开并打印,而不是执行
- rails链接函数文件下载