Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Excel链接不会加载页面,但当链接粘贴到浏览器中时,它会工作。_Ruby On Rails_Excel_Hyperlink - Fatal编程技术网

Ruby on rails Excel链接不会加载页面,但当链接粘贴到浏览器中时,它会工作。

Ruby on rails Excel链接不会加载页面,但当链接粘贴到浏览器中时,它会工作。,ruby-on-rails,excel,hyperlink,Ruby On Rails,Excel,Hyperlink,我通过RubyonRails应用程序在excel电子表格中放置了超链接。这些链接是指向一些特权页面的,这些页面需要在登录后我被带到请求的页面。然而,所发生的是,在登录到网站主页上后,I lang。有趣的是,当我在excel中右键单击该链接并将其粘贴到web浏览器url中时,它会按预期工作。所以我认为这不是我的应用程序的错,而是excel中我缺少的东西 我的场景与此场景基本相同: 我不确定这是否是一个真正的答案,但我的应用程序也有同样的问题 整个应用程序,包括主页,都受到保护(我使用的是Desiv

我通过RubyonRails应用程序在excel电子表格中放置了超链接。这些链接是指向一些特权页面的,这些页面需要在登录后我被带到请求的页面。然而,所发生的是,在登录到网站主页上后,I lang。有趣的是,当我在excel中右键单击该链接并将其粘贴到web浏览器url中时,它会按预期工作。所以我认为这不是我的应用程序的错,而是excel中我缺少的东西

我的场景与此场景基本相同:
我不确定这是否是一个真正的答案,但我的应用程序也有同样的问题

整个应用程序,包括主页,都受到保护(我使用的是Desive)。 因此,每当用户想要访问时,它都会将其重定向到

我认为Deave使用301或302重定向到登录屏幕

我的发现是,在Office中单击的链接和在IE中打开的链接无法适应这种重定向(当Chrome是默认浏览器时,没有问题)。它与您的设置匹配吗

最终,我没有找到其他解决方案,只能直接链接到登录页面。。。也许还有其他选择,但我仍在寻找

编辑:发现这篇文章(2006年)完全符合我们的情况。
同样,这不是一个解决方案,但至少是一个解释。

这个问题通常发生在IE中,我也面临同样的问题

解决这个问题的方法很简单

  • 在公用文件夹中创建redirect.html页面(公用文件夹,因为您正在使用ROR)
  • 将此复制到您的redirect.html

  • 
    请稍候,正在加载您的页面。。。
    函数getQuerystring(键){
    key=key.replace(/[\[]/,“\\\[”)。replace(/[\]]/,“\\\]”);
    var regex=new RegExp(“[\\?&]”+key+“=([^&\]*)”;
    var query=regex.exec(window.location.href);
    返回查询[1];
    }
    window.location=window.location.protocol+“/”+window.location.host+“/”+getQuerystring('page');
    

  • 应修改您在excel中构建的链接

    例如,旧链接- 新链接应为-

  • 您需要将URL的部分(在基本URL之后)作为参数传递
  • 这是怎么回事


    当用户单击excel中的链接时,它指向redirect.html,javascript构建实际URL并再次重定向到正确的页面,如果用户已登录,则将导航到实际页面,否则将重定向到登录/主页。

    这是excel的问题,它与现代web设计模式存在问题(例如,会话+重定向)

    这里有一个客户端解决方案,它绕过Excel的内部机制,而是使用OS默认URL处理程序。请注意,由于它使用宏,因此这种方法需要适当的安全设置

    在工作表的VBA模块中,添加以下代码:

    Option Explicit
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hWnd As Long, _
        ByVal Operation As String, _
        ByVal Filename As String, _
        Optional ByVal Parameters As String, _
        Optional ByVal Directory As String, _
        Optional ByVal WindowStyle As Long = vbMinimizedFocus _
    ) As Long
    
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        ShellExecute 0, "Open", Target.Address
    End Sub
    

    这是基于SO答案的答案。

    您确定超链接文本和URL相同吗?文本可能显示完整地址(因此在粘贴副本时有效)但基础URL的格式不正确?我复制它的方式是在excel工作表中右键单击它,然后将“地址”字段中的所有内容复制粘贴到浏览器,这样可以工作。如果已经登录,复制粘贴链接会将我带到页面,但在excel中单击相同的链接会将我带到登录页面(然后是主页)Chrome是我的默认浏览器。这个错误在Firefox和Chrome上都可以重现。不过我还没有在IE上检查过。谢谢你的帮助!一定要发布你提出的任何解决方案。上面提到的错误与我们的情况完全匹配。我无法访问服务器,@Bharath提出的另一个解决方案不起作用对我来说。所以这个答案不是答案,但至少是一个解释,它应该被标记为有效。感谢Pierre的研究。MS QA不太容易获得。我尽了最大努力并将问题发布在了上。我希望这个错误会从ASP.NET论坛传播到Excel工程。如果你知道更好的联系方式,请随时联系他们!
    Option Explicit
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hWnd As Long, _
        ByVal Operation As String, _
        ByVal Filename As String, _
        Optional ByVal Parameters As String, _
        Optional ByVal Directory As String, _
        Optional ByVal WindowStyle As Long = vbMinimizedFocus _
    ) As Long
    
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        ShellExecute 0, "Open", Target.Address
    End Sub