以远程表单提交嵌入式link_to远程会导致表单ajax触发

时间:2018-10-09 00:05:50

标签: ruby-on-rails ruby ruby-on-rails-4

考虑以下代码:

<script>
  $('#edit_profile_1').on('ajax:before', function(e) {
      alert('ajax:before');
  }).on('ajax:success', function(e) {
      // the form saved, alert the user via frontend visual changes
  });
</script>

<%= form_for @profile, remote: true do |f| %>
    <p>... Some stuff in form ...</p>
    <%= link_to some_path(@profile.some_fk_id), remote: true do %>
        Some Link
    <% end %>
    <%= f.button :submit do %>
        Save
    <% end %>
    <p>... some footer stuff</p>
<% end %>

提交上面的表格时,一切都会按预期进行。但是,当点击以上表单中的<% link_to %>时,也会触发表单的ajax。

当用户单击表单中的链接时,逻辑是在后端控制器上触发访问检查,并确定javascript模态部分加载还是不加载(基于某些业务逻辑) 。就目前而言,表单会保存(这不是我们在单击链接时想要的)。

我的问题是,当我只想远程触发链接时,如何使表单远离触发?

1 个答案:

答案 0 :(得分:0)

因此,我采用的方法是使用下面类似的代码检查我正在javascript中处理的对象类型(您可以更进一步,并检查ID的多种形式-或我们在我们的实际代码是class firstViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // insert animation here to run when FirstViewController appears... } } 的javascript并传递选项变量):

extend

不确定这是否是处理此问题的最有效方法,但它是否可以满足我们所需的目的。