![](/img/trans.png)
[英]What is the cause of this discrepancy between the values rendered from css and the values calculated with JS?
[英]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.