如何替换导轨的link_to_function 4.1

How to replace link_to_function for rails 4.1

本文关键字:link to function 何替换 替换      更新时间:2023-09-26

我正在创建我的第一个真正的Rails应用程序,我正在学习。我有一种情况,我需要在一个表单上创建嵌套属性,因此我一直在研究与此相关的railscast事件(196和197)。在第二集中,他使用了link_to_function方法,这在rails 4.1中显然不再可用。

我想知道如何替换它。我一直在尝试链接_to,并为其他发布类似问题的人尝试了许多建议的解决方案,但都无济于事。

以下是我目前的部分观点(不过,我已经尝试了很多东西…)

<p class="offset1 fields">
   <%= f.hidden_field :_destroy %>
   <%= link_to "remove", '#', onclick: 'remove_fields("this")' %>
</p>

这是我的.js.coffee文件,其中包含remove_fields()函数:

remove_fields = (link) -> 
    $(link).previous("input[type=hidden]").value = 1
    $(link).up(".fields").hide

这个函数应该从表单中删除一个字段,但它只是在不调用函数的情况下将"#"附加到url中。

从视图链接到资产中javascript(coffeescript)函数的最佳方式是什么?

处理此问题的一个好方法是:

a) 将href属性设置为"javascript:void(0);"b) 为链接设置DOM id或CSS类属性

<%= link_to "remove", "javascript:void(0);", id="remove_link" %>

c) 将js点击监听器添加到元素中(请检查这是否是正确的coffeescript语法)

$ ->
  $('#remove_link').click = ()-> 
    $(link).previous("input[type=hidden]").value = 1
    $(link).up(".fields").hide

d) 始终避免在html元素上使用onclick:。

更新:

e) 以下是一个可能适用于您的代码的替代方案(在您发表评论后):

$ ->
  $('#remove_link').click = ()-> 
    $('.offset1.fields input').attr('value', 1);
    $('.offset1.fields').hide();