【问题标题】:rails - link_to same page but with anchor -> no reloadrails - link_to 同一页面,但有锚点 -> 不重新加载
【发布时间】:2016-12-09 19:31:40
【问题描述】:

我想用

link_to 'Cancel', edit_project_path(@project, url_options)

取消编辑并返回编辑页面。

我将jQuery UI Tabs 用于选项卡式编辑页面。每个选项卡都有自己的表单和提交/取消按钮。

当我点击取消链接时,我想返回到活动标签。所以我设置了

url_options = {:anchor => active_tab_id}

问题是:由于锚点,页面没有重新加载。 添加data-no-turbolink 没有帮助:

link_to 'Cancel', edit_project_path(@project, url_options), :data => {:no_turbolink => true}

【问题讨论】:

  • 我认为这不是处理取消按钮的最佳方式,为什么要重新加载页面而不是将表单字段重置为其原始值?
  • ruby on rails getting started 使用反向链接。一个简单的重置按钮有点困难,因为有一些“不兼容”的表单元素(例如 jQuery Chosen 和甘特图)以及一些 JS 逻辑......所以最节省和最简单的方法是 AFAIK 重新加载。

标签: ruby-on-rails ruby erb


【解决方案1】:

尝试使用
<%=link_to("Cancel", edit_project_path(@project, url_options), method: :get)%> 这对我有更好的帮助

【讨论】:

  • 添加 method: :get 对我有用。根据请求重新加载页面
【解决方案2】:

唯一的方法是使用 javascript。

为链接添加自定义数据属性:

link_to 'Cancel', edit_project_path(@project, url_options), :data => { :reload => true }

然后把这个 javascript 放到某个地方,例如 app/javascripts/reload_hash.js

    $(function(){
        $('a[data-reload="true"').on('click', function(e) {
            window.location = $(e.target).attr('href');
            window.location.reload(true);
        });
    });

【讨论】:

  • 我希望有一个不涉及 JavaScript 的更清洁的解决方案。无论如何,谢谢亚历克斯,这解决了问题。
  • @jakob 没问题,希望我能正确理解您的要求
  • 这会在 Safari 版本 8.0 (10600.1.25.1) 中引发错误:语法错误,无法识别的表达式:a[data-reload="true"
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多