我不知道当我打印参数时,我正在获取端点名称作为操作'change_state',我正在使用自定义路由,操作必须作为值'change_state',正确的值应该是'playing'
def change_state
puts params
我得到这个:
#<ActionController::Parameters {"action"=>"change_state", "controller"=>"v1/sports", "sport_id"=>"5", "sport"=>{}} permitted: false>
路线的陈述就像他的:
resources :sports do
post '/change_state', to: 'sports#next_state'
这是我的网址,我在使用陶罐
http://localhost:8110/.../sports/5/change_state
作为一个身体,我发送
{
state: 'playing'
}
1条答案
按热度按时间laik7k3q1#
我相信这是正确的行为。
params
始终包含与路由到的控制器方法匹配的action
。这是Rails中的正常行为,并为您提供了一种了解正在处理哪个“动作”的方法。* (见下文进一步解释)***你试过检查
state
密钥的参数吗?**您在问题中列出的输出似乎被切断了,如果您通过调试器检查,您可能会找到预期的密钥。您也可以通过puts params.to_unsafe_hash
将其打印为散列action
密钥params进一步说明:举个例子,在一个新的应用程序中,使用带有路由和控制器的StaticController:
当你访问
http://localhost:3000/
时,你会看到它打印出来:{"controller"=>"static", "action"=>"home"}
如果你访问
http://localhost:3000/?state=exuberant
,你会看到它打印:{"state"=>"exuberant", "controller"=>"static", "action"=>"home"}