参数不在 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
问题有两个:
出于某种原因 Binding.pry 无法读取参数。我还没弄明白为什么。我可以做 p params
并看到它们。我可以在那之后立即执行 binding.pry
并尝试 p params
,但他们不会打印。这与我上面描述的行为不同。唯一的变化是我今天开车,而我的那对不是。如果我们可以重现它们,我们可能需要解决这些差异。如果他遇到不同,我会报告这件事。
参数本身被一些代码操纵,这意味着我需要以不同的方式访问密钥。一旦弄清楚了,一切就开始了。
我有这样的控制器:
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
问题有两个:
出于某种原因 Binding.pry 无法读取参数。我还没弄明白为什么。我可以做
p params
并看到它们。我可以在那之后立即执行binding.pry
并尝试p params
,但他们不会打印。这与我上面描述的行为不同。唯一的变化是我今天开车,而我的那对不是。如果我们可以重现它们,我们可能需要解决这些差异。如果他遇到不同,我会报告这件事。参数本身被一些代码操纵,这意味着我需要以不同的方式访问密钥。一旦弄清楚了,一切就开始了。