【发布时间】:2016-01-22 07:23:47
【问题描述】:
我在 ubuntu 上托管了一个 Rails 应用程序,并与 Apache2 和 Passenger 一起使用。我在更改我的一个视图以实际反映在服务器中时遇到问题。我不是在谈论 css,但生成的 html 并没有改变。我不知道该怎么办。我正在使用 turbolinks——尽管我不是在谈论 css。我有一个未在加载时呈现的 new.js.erb 文件,并且我对部分视图进行了更改,该部分视图也未在重新启动时呈现。所有这些都在开发中工作。
生产.rb
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = true
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
用passenger-config restart-app重启服务器
编辑 1 不会加载的edit.js.erb
$("#deal_<%= escape_javascript @deal.id.to_s %>").fadeOut("slow", function() {
var div = $("<%= escape_javascript render partial: 'edit_deal', locals: {deal: @deal} %>").hide();
div.find('.save_deal_link').first().click(function(event) {
$(this).closest('form').submit();
event.preventDefault();
// Prevent link from following its href
});
$("#deal_<%= escape_javascript @deal.id.to_s %>").replaceWith(div);
div.fadeIn("slow");
});
当我尝试按照 baseurl/accounts/2/deals/1/edit.js 直接访问此代码时,我收到错误 422,这似乎只是日志中的标准 CORS 错误。我认为解决这个问题的更好线索是,在部分_deal.html.erb 中,这些更改没有反映在生产环境中。
编辑 2 我注意到单击处理程序没有为发出 ajax 请求的链接触发,并且生产服务器似乎正在为 new.js.erb 提供服务——只是视图(.html.erb)中的变化似乎并不无论我上传多少次视图文件夹都会得到服务
【问题讨论】:
-
您是否专门在视图中呈现该文件?如 ?此外,您的 new.js.erb 文件是否从控制器操作(例如 ajax 请求)运行?如果是这种情况,您是否尝试运行会告诉控制器运行 .js.erb 文件的请求?
-
不,我有一个试图呈现它的 ajax 请求。但它也没有对 html.erb 进行更改
-
您的 new.js.erb 代码看起来如何?您是否正确转义 javascript 以呈现部分内容?
-
是的,这一切都被逃脱了——它在开发和本地机器上运行良好。它没有呈现任何内容,就好像文件不存在一样。它也是edit.js.erb——新作品。生病添加代码
-
哦……哦,天哪。我发现了问题。我将部分的位置从 /accounts/_deal.html.erb 更改为 /application/_deal.html.erb 并忘记在生产中删除旧的。呵呵。
标签: ruby-on-rails ruby ruby-on-rails-4