无法匹配现有路径路径并获得404 Not Found

时间:2014-04-24 14:20:08

标签: javascript jquery ruby-on-rails sammy.js

我有以下html标记,其中操作是sammyjs路由代码中定义的路径之一:

<form id="loginform" action="#/login" method="post" class="form-horizontal">

<!-- input & hidden elements -->

<!-- submit button -->

</form>

如果上面的视图是通过网址加载的,例如&#34; localhost:xxx / Account / Login&#34; ,当我提交上述表单时,sammyjs会记录它无法解决的错误找到路线:

[Thu Apr 24 2014 13:52:39 GMT+0100 (GMT Daylight Time)] #shell 404 Not Found get /Account/Login#/login  
Error {message: "404 Not Found get /Account/Login#/login ", stack: "Error↵    at Object.Sammy.Application.$.extend.err…/localhost:36141/Scripts/Vendor/require.js:132:23"}
message: "404 Not Found get /Account/Login#/login "
stack: "Error↵    at Object.Sammy.Application.$.extend.error (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1346:47)↵    at Object.Sammy.Application.$.extend.notFound (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1335:22)↵    at Object.Sammy.Application.$.extend.runRoute (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1179:21)↵    at Object.Sammy.Application.$.extend._checkLocation (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1365:25)↵    at Object.Sammy.Application.$.extend.run (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:971:12)↵    at http://localhost:36141/Scripts/App/common.js:36:19↵    at Object.context.execCb (http://localhost:36141/Scripts/Vendor/require.js:1650:33)↵    at Object.Module.check (http://localhost:36141/Scripts/Vendor/require.js:866:51)↵    at Object.<anonymous> (http://localhost:36141/Scripts/Vendor/require.js:1113:34)↵    at http://localhost:36141/Scripts/Vendor/require.js:132:23"
__proto__: d

我无法理解为什么sammy会寻找&#34; / Account / Login#/ login&#34; ,因为我的表单操作设置为& #34;#/登录&#34;

我还尝试更改下面错误提及的路径路径,例如从&#34;#/ login&#34; &#34; /帐户/登录#/ login&#34; ,但我再次收到与上面链接中提到的相同的错误。

this.post('#/login', function (context) {
//process
});

其他链接或表单标签也是如此。我想要使​​用的哈希标记后缀为网址中的任何内容,例如&#34; /帐户/登录#{/ any_hash_tag}&#34; 。 我该怎么做才能解决这个问题?

但是,如果视图是通过URL加载的,那么一切正常,例如&#34; localhost:xxx /&#34; ,没有其他路由参数。

如果有什么事情我做错了会很高兴。

干杯

1 个答案:

答案 0 :(得分:0)

这就是URL Fragments的工作方式。

Sammy希望路线从域名开始,然后是斜线 链接到#[anything]的锚标记会将该网址片段附加到当前视图的末尾。

你可以通过几种方式解决这个问题:

  1. 完全使用Sammy,或根本不使用它。我不确定为什么你会有像/Account/Login#/login这样的路线,但它看起来很乱,看起来有两个路由器。这没什么好玩的。像#/account/login一样使用Sammy。
  2. 让您的链接操作执行/#/login。这将重置到Web根目录的基本路由,然后将片段附加到末尾。