gpt4 book ai didi

ruby-on-rails - Rails 在生产中应用错误的 "layouts",但在部署中很好

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:53 25 4
gpt4 key购买 nike

我的 Rails 应用程序中有三种布局。我发现它们在我的开发机器上都完全按照预期工作,但是当我部署到生产环境时, View 以错误的布局呈现。

例如,我有这个...

class AgendasController < ApplicationController

layout('main')

def show
@agenda = Agenda.find(params[:id])
render( :action => :show, :layout => 'agenda')
end

# etc ...

end

我希望所有 View 都以“主要”布局呈现,除了 show 以“议程”布局呈现。

正如我所说,它在开发中运行完美,但在生产中,show View 呈现“主要”布局而不是预期的“议程”布局。

我也试过添加...

layout('main', :except => :show)

但这并没有帮助——同样的结果。

我在 Passenger 中使用 Rails 2.3.11

我在生产环境中的 gem 环境,以防有帮助...

RubyGems Environment:
- RUBYGEMS VERSION: 1.3.5
- RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-linux]
- INSTALLATION DIRECTORY: /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /opt/ruby-enterprise-1.8.7-2010.01/bin/ruby
- EXECUTABLE DIRECTORY: /opt/ruby-enterprise-1.8.7-2010.01/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
- /home/emicha/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://gems.rubyforge.org/

我以前从未见过这个问题,服务器上的所有其他应用都运行良好。


更新

生产日志声称它使用的是“议程”布局,但浏览器中显示的是“主要”布局。我可以从外观和查看 HTML 源代码中看出这一点——其中包含不在“议程”布局中的 JS 文件。

Processing AgendasController#show (for 10.1.1.136 at 2011-09-02 13:22:00) [GET]
Parameters: {"action"=>"show", "id"=>"1682", "controller"=>"agendas"}
Rendering template within layouts/agenda
Rendering agendas/show

最佳答案

解决方案

好的,这就是发生的事情。在“主要”布局中,我有类似...

= stylesheet_link_tag "styles", 'other_styles', :cache => true

= javascript_include_tag 'jquery-1.6.2.min', 'application', :cache => true

在“议程”布局中我刚刚...

= stylesheet_link_tag "agenda" :cache => true

在开发环境中,Rails 不会缓存这些 Assets (即,将它们连接在一起),因此一切正常。但在生产中,当你有 :cache => true 时它会执行。

并且它还包含了带有议程布局的串联 JS 文件(即使该布局不使用任何 JS,也没有链接到 head 元素中)。

JS“.all”文件的意外样式和存在让我相信它为议程显示 View 使用了错误的布局。

事实证明,Rails 一直在使用正确的布局,但显然到处都包含所有串联的 Assets 文件。

解决方案是更改“议程”布局以使其...

= stylesheet_link_tag "agenda" :cache => false

关于ruby-on-rails - Rails 在生产中应用错误的 "layouts",但在部署中很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7288712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com