我的控制器看起来像这样:
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并反复点击,我最终会:
16: def process_action(*args)
17: run_callbacks(:process_action, action_name) do
=> 18: super
19: end
20: end
有params。如果我接下来键入,那么我转到我的renew_with_changes
方法,并且参数不见了。
我可以尝试尝试跟踪此情况?这是一个Rails3.2应用程序,如果有用的话,安装的强参数gem更像Rails4。
路线信息:
resources :fidelity_bond_renewals do
member do
.
.
.
put :renew_with_changes
end
end
答案 0 :(得分:0)
问题有两个:
无论出于何种原因,Binding.pry无法读取参数。我还没弄明白为什么。我可以p params
看到它们。我可以在那之后做binding.pry
并尝试p params
并且他们不会打印。这与我上面描述的行为不同。唯一的变化是我今天开车而且我的配对没有。如果我们可以重现它们,我们可能需要解决这些差异。如果他遇到差异,我会回复此事。
params本身被一些代码操纵,这意味着我需要以不同方式访问密钥。一旦弄明白,一切都开始起作用了。