繁体   English   中英

什么可能导致铁路中本地/开发和生产路由之间的差异?

[英]What could cause a discrepancy between local/development and production routing in rails?

我本地环境中的所有内容都可以正常运行,但是在Heroku上的生产环境中,Ajax链接可以在虚假网址前呈现内容。 /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("<%= escape_javascript(render @atag) %>"); 所以我想知道它是否与@atags路径因某种原因在生产中被不同地解释有什么关系?

断开的链接的构建者是:

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])

我将在哪里/如何为其他视图做出等效定义? 这可能会解决生产中的问题。 谢谢!

在现有方法中, piece[1..-1]是标记,路径的基础是/t/因此将atag_path(Atag.find_by(tag:piece[1..-1].downcase))更改为"/t/" + piece[1..-1]解决了这个问题,因为它直接将路径作为字符串传递。 此外,它比返回数据库找到路线要快得多。

我不确定/好奇为什么它在当地很好但不在生产中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM