参数不在 Rails 控制器方法中,但在过滤器和应用程序控制器之前

Params Not In Rails Controller Method, but in before filter and application controller

我有这样的控制器:

class ApplicationController < ActionController::Base
  before_filter :print_params

  def print_params
   p params
  end
end

class CommandsController < ApplicationController
  before_filter :print_params

  def print_params
   p params
  end
end

class FidelityBondRenewalsController < CommandsController
  before_filter :print_params

  def print_params
   p params
  end

  def renew_with_changes 
     p params
  end
end

当我 运行 我的黄瓜测试时,我一直看到打印参数,除了当我最终点击 renew_with_changes 方法然后我的参数消失时。我在这个控制器中有其他方法,但它们没有发生。我在代码库中搜索了其他方法与此方法之间的任何差异,但找不到任何内容。

如果我在 FidelityBondRenewalsController 的 print_params 方法中放置一个 binding.pry 并一遍又一遍地点击 next,我最终得到:

    16: def process_action(*args)
    17:   run_callbacks(:process_action, action_name) do
 => 18:     super
    19:   end
    20: end

它有参数。如果我输入 next,然后我转到我的 renew_with_changes 方法并且参数消失了。

我可以尝试什么来追踪它?这是一个 Rails3.2 应用程序,安装了强大的参数 gem 更像 Rails4,如果有用的话。

路线信息:

  resources :fidelity_bond_renewals do
    member do
      .
      .
      .
      put :renew_with_changes
    end 
  end 

问题有两个:

  1. 出于某种原因 Binding.pry 无法读取参数。我还没弄明白为什么。我可以做 p params 并看到它们。我可以在那之后立即执行 binding.pry 并尝试 p params,但他们不会打印。这与我上面描述的行为不同。唯一的变化是我今天开车,而我的那对不是。如果我们可以重现它们,我们可能需要解决这些差异。如果他遇到不同,我会报告这件事。

  2. 参数本身被一些代码操纵,这意味着我需要以不同的方式访问密钥。一旦弄清楚了,一切就开始了。