首页 > 解决方案 > Rails 通过不同对象的形式将参数从一个控制器动作传递到另一个控制器动作

问题描述

我需要通过表单将参数从一个控制器操作传递到另一个控制器操作。发送参数的动作edit,只是呈现编辑页面并且没有重定向。但是我在操作中需要这个参数update。我想我可以使用隐藏字段:

f.hidden_field :route_id, value: @route.id

但是由于该属性不属于同一个对象,因此我得到了表单unknown attribute 'route_id'

有什么建议么?

编辑:更多信息。所以我们在这个编辑动作中看到的是一个BusStop. 需要注意的重要一点是,有两种方法可以到达BusStop,通过名称搜索或通过 a 上的停靠点列表Route。现在,为了方便用户,我想要做的是有一个“保存并下一步”按钮,但如果通过路线列表到达停靠点,我们只需要该选项。那就是提交表单并重定向到下一个BusStop。但是,为了找到下一个BusStop,我们需要两件事。一个Route.id和一个BusStopsRoute.directionBusStopsRoutes有两个方向,aBusStop可能在两个方向上,也可能不在两个方向上,所以我们不能通过 stop 来推断方向。同样,我们不能通过Route因为和BusStopBusStopRoute通过 建立多对多关系BusStopsRoute

把它带回来一点,我在编辑操作中有Route.id和的值。我需要更新操作中的这些值来找到下一个.BusStopsRoute.directionBusStopBusStopBusStop

标签: ruby-on-railsformsparameters

解决方案


你用这个:

f.hidden_field :route_id, value: @route.id

当您想从 . 表示的模型上的属性创建隐藏字段f

由于您正在尝试为不是由 表示的模型上的属性的值创建一个隐藏字段,因此请f使用hidden_field_tag,例如:

hidden_field_tag :route_id, @route.id

有关更多信息,请参阅文档


推荐阅读