Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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/2/ruby-on-rails/63.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
Javascript 是什么导致rails中的本地/开发和生产路线之间存在差异?_Javascript_Ruby On Rails_Ajax_Ruby On Rails 4_Heroku - Fatal编程技术网

Javascript 是什么导致rails中的本地/开发和生产路线之间存在差异?

Javascript 是什么导致rails中的本地/开发和生产路线之间存在差异?,javascript,ruby-on-rails,ajax,ruby-on-rails-4,heroku,Javascript,Ruby On Rails,Ajax,Ruby On Rails 4,Heroku,我的本地环境中的一切都很好,但在heroku上的生产环境中,ajax链接在URL ex./t/tags而不是/atags/1处呈现内容,这会导致一个关于缺少id的错误: ActionView::Template::Error (No route matches {:action=>"show", :controller=>"atags", :id=>nil} missing required keys: [:id]): 这就没有什么意义了,因为如果我在生产环境中导航到“/t/

我的本地环境中的一切都很好,但在heroku上的生产环境中,ajax链接在URL ex./t/tags而不是/atags/1处呈现内容,这会导致一个关于缺少id的错误:

ActionView::Template::Error (No route matches {:action=>"show", :controller=>"atags", :id=>nil} missing required keys: [:id]):
这就没有什么意义了,因为如果我在生产环境中导航到“/t/tags”,页面的加载就会很好。因此,当通过常规渲染视图执行相同的路由时,路由上的ajax被破坏

是什么导致了这种错误以及开发环境和生产环境之间的差异

我检查了heroku和本地的路线,它们是相同的

呈现视图的js是:$tag_posts.html;所以我想知道这是否与@atags path在生产中由于某种原因被不同地解释有关

断开的链接由以下部分构成:

link_to(piece.downcase, atag_path(Atag.find_by(tag:piece[1..-1].downcase)), 
:class => 'post_hashtag', :remote => true, :onclick => "location.href='#top'")
这些由同一代码构建的链接在生产环境中运行良好,但在呈现常规页面时不使用remote:true和:onclick=>location.href='top'

    link_to(piece.downcase, atag_path(Atag.find_by(tag:piece[1..-1].downcase)),
              :class => 'post_hashtag')
再次注意,这两种类型的链接在开发中都很好,只有后者在生产中。任何对这种奇怪现象的洞察都将不胜感激

谢谢

编辑:我想我几乎缩小了范围。在我定义的show中的atags控制器中:

@atag = Atag.find_by_tag(params[:id])

在何处/如何为其他视图创建等效定义?这可能会解决生产中的问题。谢谢

在hand-piece[1..-1]的方法中,标记是标记,路由的基础是/t/so更改atag\u pathAtag。find\u bytag:piece[1..-1]。向下转换为/t/+piece[1..-1]解决了这个问题,因为它直接以字符串形式传递路由。而且,这比返回数据库查找路由要快得多


不过,我不确定/好奇为什么在当地情况良好,但在生产中却没有。

仍然存在其他差异,只有在生产中才会出现。非常糟糕。