Rails 4.2改变了Garlic.js的路径名

时间:2015-03-21 08:50:01

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

在我的应用的Rails 4.1版本中,我的表单字段由Garlic.js保存到localStorage,如下所示:

garlic:www.mydomain.com/posts/new>form>input.post[title]: "d"

然而,当我将应用程序升级到Rails 4.2时,这些路径将更改为:

garlic:gsp-staging.premiacapital.com/posts/new>form>input.post[title]:eq(2) "d"

这会对我的测试造成严重破坏(我使用路径名测试localStorage)。知道为什么要追加这个eq(2)吗?

1 个答案:

答案 0 :(得分:0)

我找到了罪魁祸首。

基本上,在所有以前版本的Rails中,输入行没有兄弟姐妹:

[
   <input class="span12 garlic-auto-save" id="js_post_title" name="post[title]" type="text">
]

在Rails 4.2中,表单中的输入似乎伴随着许多其他隐藏的输入字段:

[
   <input name="utf8" type="hidden" value="✓" class="garlic-auto-save">,
   <input type="hidden" name="authenticity_token" value="9I6MjfVtm76tXLI4pQjv9/yIhO8jpgg84SZcA/VZGaSkQ9vNqHoz54NYFpYeJLs9Im86hIF2qOBCPXE48YZhKw==" class="garlic-auto-save">,
   <input class="span12 garlic-auto-save" id="js_post_title" type="text" name="post[title]">
]

这意味着触发了Garlic.js中的this method,因此将eq(2)作为唯一标识符附加到路径名的末尾。

因此,我只需使用这个新的唯一标识符更新我的测试,它们都已通过。