Javascript 是什么导致rails中的本地/开发和生产路线之间存在差异?
我的本地环境中的一切都很好,但在heroku上的生产环境中,ajax链接在URL ex./t/tags而不是/atags/1处呈现内容,这会导致一个关于缺少id的错误: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/
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]解决了这个问题,因为它直接以字符串形式传递路由。而且,这比返回数据库查找路由要快得多
不过,我不确定/好奇为什么在当地情况良好,但在生产中却没有。仍然存在其他差异,只有在生产中才会出现。非常糟糕。