Mic*_*ruz 6 javascript assets ruby-on-rails link-to-function
我正在创建我的第一个真正的Rails应用程序,我正在学习.我有一种情况需要在一个表单上创建嵌套属性,因此一直在查看与之相关的railscast剧集(196和197).在第二集中,他使用了link_to_function方法,这种方法在rails 4.1中显然已不再可用.
我想知道如何更换它.我一直在尝试link_to,并为已发布类似问题的其他人尝试了许多建议的解决方案,但无济于事.
这是我的观点部分看起来像现在(虽然,我尝试了很多东西......)
<p class="offset1 fields">
<%= f.hidden_field :_destroy %>
<%= link_to "remove", '#', onclick: 'remove_fields("this")' %>
</p>
Run Code Online (Sandbox Code Playgroud)
这是我的.js.coffee文件,包含remove_fields()函数:
remove_fields = (link) ->
$(link).previous("input[type=hidden]").value = 1
$(link).up(".fields").hide
Run Code Online (Sandbox Code Playgroud)
该函数应该从表单中删除一个字段,而只是在不调用函数的情况下将"#"附加到url.
从视图链接到资产中的javascript(coffeescript)函数的最佳方法是什么?
解决此问题的好方法是:
a)将href属性设置为“ javascript:void(0);” b)将DOM ID或CSS类属性设置为您的链接
<%= link_to "remove", "javascript:void(0);", id="remove_link" %>
Run Code Online (Sandbox Code Playgroud)
c)将js点击监听器添加到您的元素中(请检查这是否是正确的coffeescript语法)
$ ->
$('#remove_link').click = ()->
$(link).previous("input[type=hidden]").value = 1
$(link).up(".fields").hide
Run Code Online (Sandbox Code Playgroud)
d)始终避免在html元素上使用onclick:。
更新:
e)这是可能对您的代码有效的替代方法(在您的注释之后):
$ ->
$('#remove_link').click = ()->
$('.offset1.fields input').attr('value', 1);
$('.offset1.fields').hide();
Run Code Online (Sandbox Code Playgroud)