ruby-on-rails - Rails 通过不同对象的形式将参数从一个控制器动作传递到另一个控制器动作
问题描述
我需要通过表单将参数从一个控制器操作传递到另一个控制器操作。发送参数的动作edit
,只是呈现编辑页面并且没有重定向。但是我在操作中需要这个参数update
。我想我可以使用隐藏字段:
f.hidden_field :route_id, value: @route.id
但是由于该属性不属于同一个对象,因此我得到了表单unknown attribute 'route_id'
有什么建议么?
编辑:更多信息。所以我们在这个编辑动作中看到的是一个BusStop
. 需要注意的重要一点是,有两种方法可以到达BusStop
,通过名称搜索或通过 a 上的停靠点列表Route
。现在,为了方便用户,我想要做的是有一个“保存并下一步”按钮,但如果通过路线列表到达停靠点,我们只需要该选项。那就是提交表单并重定向到下一个BusStop
。但是,为了找到下一个BusStop
,我们需要两件事。一个Route.id
和一个BusStopsRoute.direction
。BusStopsRoutes
有两个方向,aBusStop
可能在两个方向上,也可能不在两个方向上,所以我们不能通过 stop 来推断方向。同样,我们不能通过Route
因为和BusStop
BusStop
Route
通过 建立多对多关系BusStopsRoute
。
把它带回来一点,我在编辑操作中有Route.id
和的值。我需要更新操作中的这些值来找到下一个.BusStopsRoute.direction
BusStop
BusStop
BusStop
解决方案
你用这个:
f.hidden_field :route_id, value: @route.id
当您想从 . 表示的模型上的属性创建隐藏字段f
时
由于您正在尝试为不是由 表示的模型上的属性的值创建一个隐藏字段,因此请f
使用hidden_field_tag
,例如:
hidden_field_tag :route_id, @route.id
有关更多信息,请参阅文档。
推荐阅读
- machine-learning - 二元分类器的集成与用于多类分类的单个多类分类器
- javascript - getElementByID + .appendhild() [TypeError: 无法在 'Node' 上执行 'appendChild':参数 1 不是 'Node' 类型。]
- sql-server - 转换为日期时间产生不正确的结果
- reactjs - 标题组件根据 React / Gatsby / Styled-components 中的背景更改文本颜色
- javascript - 在 dblclick 上为段落中的每个单词创建弹出框的最佳方法是什么?(HTML/CSS/Bootstrap4/JQuery)
- bash - Bash 对话框取消按钮正在返回,退出代码为 0;转义键也是如此
- image - 如何将图像表示为二维点
- wordpress - 如果网站使用 Divi,如何创建模板?
- google-api - 根文件夹的 ID 与其中项目的父 ID 不匹配
- wordpress - 以下目录/文件的写入权限问题 Elementor 上传目录