6

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

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

这是我目前部分视图的样子(虽然,我已经尝试了很多东西......)

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

4

1 回答 1

5

解决这个问题的一个好方法是:

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

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

c) 将 js 点击监听器添加到您的元素(请检查这是否是正确的咖啡脚本语法)

$ ->
  $('#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();
于 2014-09-22T20:31:57.860 回答