的Rails 3.1的link_to远程=>真实呈现HTML代替JS,相同的代码在某些情况下

问题描述:

这是我在代码轨道3.1的Rails 3.1的link_to远程=>真实呈现HTML代替JS,相同的代码在某些情况下

<%= link_to 'All',:action => "bycategory", :id => 'All', :remote => true %> 

我已经定义了一个js.erb。这段代码工作得非常好,即当把表放入某个CSS时调用JS。当我只是更改表ID或放入无序列表或其他任何地方时,它会在寻找html.erb时给我造成模板错误。只需跳动我:(。

我发现的一件事是,在第一种情况除了id和远程,它也发送时间戳 在第二种情况下,时间戳丢失。不知道这是为什么发生 任何帮助将不胜感激,已经花了太多的时间调试这个

+0

我不确定我完全理解这个问题。罪魁祸首可能是,由于在运行时在浏览器上设置了远程操作,当找不到id(或者如果浏览器上未启用javascript),则链接指向任何地方。使用萤火虫在浏览器上调试动作。 – baol

+0

这种不一致性让我感到困惑,另外一种行为是,如果有两个请求,一个是remote => true,而另一个没有这个,那么在表的两个不同行中只有一个有效。 – user1069240

+1

添加':remote => true'只会添加html属性'data-remote =“true”',然后应该由'jquery-rails'处理。放入':remote => true'时,是否正确生成了'data-remote =“true”? –

你可能想将:action =>“bycategory”和:ID =>“所有”在哈希作为

<%= link_to 'All', { :action => "bycategory", :id => 'All' }, :remote => true %> 

这将生成正确的html属性,即data-remote =“true”,否则它将简单地处理所有后续事件g作为http请求属性。您的代码将产生 -

<a href="/bycategory?id=All&amp;remote=true">All</a> 

而使用哈希将生成类似于

<a data-remote="true" href="/bycategory/All">All</a> 

东西,我有同样的问题和Rails 3.1.3,我用耙资产治愈吗:预编译,但保证你有在application.js“// =需要jquery_ujs”而不是“// = require jquery”,这是主要的问题,我花了至少12个小时才决定这样做!可怕!

+0

谢谢!你的回答使我走向正确的轨道。我有同样的问题,实际上需要jquery_ujs,但我也将JavaScript库缓存到一个文件中:'javascript_include_tag * js_libraries,:cache =>'cached_js''。所以我试图删除:缓存参数,它的作品:)。 –