如何替换rails 4.1的link_to_function

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)函数的最佳方法是什么?

Mar*_*iro 5

解决此问题的好方法是:

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)