【问题标题】:Why Ajax renders 2 views in rails 3.1 app为什么 Ajax 在 rails 3.1 应用程序中呈现 2 个视图
【发布时间】:2012-05-02 21:45:56
【问题描述】:

在我们的 rails 3.1 应用程序中输入 log 时,使用 ajax 来渲染下面的输入屏幕。这是日志的链接:

<%= link_to 'Log', new_part_out_log_path(@part, :format => :js), :remote => true, :id => 'new_log_link' %>

new.js.erb 是这样的:

$("<%= escape_javascript render(:file => 'out_logs/new.html.erb') %>").insertAfter('#new_log_link');
$('#new_log_link').hide();
$('#close').hide();

问题是,在单击“日志”后,呈现了 out_logs/new.html.erb 的 2 个相同视图,而不是一个视图。我们的代码可能有什么问题?非常感谢。

【问题讨论】:

  • 你使用respond_to吗?也许 rails 以某种方式决定呈现 javascript 和 HTML 答案。你怎么知道它渲染了 2 次?你能发布更多控制器代码吗?
  • 我们不使用reponse_to。
  • 似乎突然之间每个 ajax 开始呈现两个相同的视图。它似乎不仅仅与一个控制器有关。
  • 但是你怎么知道我渲染了2次呢?您是在日志中看到它还是发生了什么奇怪的事情?
  • 点击后会出现两个相同的视图。这些视图由 new.js.erb 生成。我们认为 new.js.erb 必须被渲染两次。

标签: ruby-on-rails ajax ruby-on-rails-3.1


【解决方案1】:

问题与升级到 ruby​​ 1.9.3 有关,这会导致 webrick 服务器(用于开发)警告消息,并且还会在屏幕上两次呈现 .js.erb 文件。两次渲染问题在我们运行 nginx 的生产服务器上消失了。以下链接可能有助于理解问题:

http://theresa.multimediatechnology.at/webrick-warnings-in-ruby-1-9-3/

What does "WARN Could not determine content-length of response body." mean and how to I get rid of it?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多