ruby-on-rails – 为什么重定向到#show动作而不传递:id param w
我有一个关于rails的简单问题.
我按照教程(来自CrashLearner). Prefix Verb URI Pattern Controller#Action messages GET /messages(.:format) messages#index POST /messages(.:format) messages#create new_message GET /messages/new(.:format) messages#new edit_message GET /messages/:id/edit(.:format) messages#edit message GET /messages/:id(.:format) messages#show PATCH /messages/:id(.:format) messages#update PUT /messages/:id(.:format) messages#update DELETE /messages/:id(.:format) messages#destroy 据我所知,到达这个控制器的show动作的路径就像/ messages / 17,我的意思是我们必须把我们想要查看的特定消息的id:. 因此,如果我需要在修改后将用户重定向到此消息视图(在#update操作中),我应该使用: redirect_to message_path(17) 但事实证明,省略这个:id实际上很有用: redirect_to message_path 为什么以及如何使用这个? 因为这可以从实际接收到:id param的动作开始,所以我认为控制器将它保留在内存中并默认情况下将其传递给它,但我想知道这种行为来自何处? 我在rails文档中找不到任何内容. 这是本教程的github存储库,因此上面一行的具体位置是here in this controller. 我确认这是有效的. 还有一个与前一个Message资源嵌套的Comment资源. 我认为为什么这里仍然传递id的原因是因为我们在Comments控制器中并且:另一个资源的id无法在引擎盖下传递,因此为什么它被明确地写出来. 我没有另外的解释.. 任何人都可以解释为什么这有效吗? 解决方法
我在
Rails source发现了这个:
所以这里:id存在于当前请求参数中并且它用于此路由. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |