Paloma gem防止仅限标题的响应

时间:2013-03-14 16:49:06

标签: ruby-on-rails http-headers gem partial-views

我们的应用程序使用Paloma gem来监督每个请求的JavaScript执行。这通常很有效,直到您尝试执行仅限标头的响应。例如,这是我们控制器中更新操作的代码:

class EmployeesController < InternalController

  def update
    respond_to do |format|
      format.any do
        head :ok
      end
    end
  end

end

非常简单。它不应该使用任何视图或模板来生成此响应。对?然后Paloma参与......而不是一个简单的HTTP 200 OK,我们得到一个ActionView::MissingTemplate异常引发了以下错误消息和跟踪:

Missing partial paloma/callback_hook with {:locale=>[:en], :formats=>[:all], :handlers=>[:erb, :builder, :slim, :coffee, :haml, :rabl]}.
Searched in: * "/Users/<username>/Development/<app name>/app/views" * "/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/jasminerice-0.0.10/app/views" * "/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/paloma-2.0.1/app/views" * "/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.14.1/app/views" * "/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/devise-2.2.3/app/views" * "/Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/paloma-2.0.1/app/views"
Backtrace:
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/path_set.rb:58:in `find'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/lookup_context.rb:109:in `find'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/renderer/partial_renderer.rb:339:in `find_template'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/renderer/partial_renderer.rb:333:in `find_partial'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/renderer/partial_renderer.rb:222:in `render'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/renderer/renderer.rb:41:in `render_partial'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/renderer/renderer.rb:15:in `render'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.12/lib/action_view/helpers/rendering_helper.rb:24:in `render'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/haml-4.0.0/lib/haml/helpers/action_view_mods.rb:12:in `render_with_haml'
  /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/paloma-2.0.1/lib/paloma/action_controller_filters.rb:23:in `update_callback'
  ...
  (further lines snipped)

令人困惑的事实是,当我去看看已安装的宝石时,它正在寻找的部分就是它的所有荣耀,所以似乎没有任何理由为什么Rails不应该能够找到它:

Maple:~ <username>$ ls -l /Users/<username>/.rvm/gems/ruby-1.9.3-p194/gems/paloma-2.0.1/app/views/paloma
total 8
-rw-rw-r--  1 <username>  staff  1323 Mar 11 09:10 _callback_hook.html.erb

对于返回HTTP状态为200的其他请求以及响应正文,不会发生这种情况,只有通过Rails'head方法才会出现仅限标题的响应。

我在Paloma宝石中发现了一个错误吗?或者Rails中的错误?或者有什么我应该调整以允许查找视图?为什么Rails会在第一时间搜索视图以生成仅限标头的响应?任何人都可以提供的帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

如果您希望Paloma不在特定的Rails控制器中执行   你需要传递false作为Paloma参数的动作。

def edit
  @user = User.find params[:id]
  js false
end

https://github.com/kbparagua/paloma#preventing-paloma-execution