Ruby on rails Rails通过不同对象的形式将参数从一个控制器动作传递到另一个控制器动作
我需要通过表单将参数从一个控制器动作传递到另一个控制器动作。发送参数的操作,Ruby on rails Rails通过不同对象的形式将参数从一个控制器动作传递到另一个控制器动作,ruby-on-rails,forms,parameters,Ruby On Rails,Forms,Parameters,我需要通过表单将参数从一个控制器动作传递到另一个控制器动作。发送参数的操作,edit,只是呈现编辑页面,没有重定向。但是,我需要在更新操作中使用此参数。我想我可以使用一个隐藏字段: f.hidden\u字段:route\u id,值:@route.id 但是由于属性不属于同一个对象,因此该表单用于I get未知属性'route\u id' 有什么建议吗 编辑:更多信息。因此,我们在这个编辑操作中看到的是一个总线停止。需要注意的一件重要事情是,有两种方法可以到达公交站点,或者通过名称搜索,或者通过
edit
,只是呈现编辑页面,没有重定向。但是,我需要在更新操作中使用此参数。我想我可以使用一个隐藏字段:
f.hidden\u字段:route\u id,值:@route.id
但是由于属性不属于同一个对象,因此该表单用于I get未知属性'route\u id'
有什么建议吗
编辑:更多信息。因此,我们在这个编辑操作中看到的是一个总线停止
。需要注意的一件重要事情是,有两种方法可以到达公交站点
,或者通过名称搜索,或者通过路线上的站点列表
。现在,为了方便用户,我想做的是有一个“保存并下一步”按钮,但我们只希望在通过路线列表到达站点时使用该选项。即提交表单并重定向到下一个总线站
。然而,为了找到下一个公共汽车站
,我们需要两件事。ARoute.id
和ABusStopsRoute.direction
BusStopsRoutes
有两个方向,而BusStop
可能在两个方向上,也可能不在两个方向上,因此我们无法通过停止来推断方向。同样,我们无法通过公交站点
推断路线
,因为公交站点
和路线
通过公交站点路线
具有多对多关系
把它放回去一点,我在bustop
编辑操作中有Route.id
和bustopsroute.direction
的值。我需要总线停止
更新操作中的那些值来查找下一个总线停止
,您可以使用API
在该对象的类中
class Voxorin < ApplicationRecord
attribute :route_id
end
class Voxorin
假设您的对象是ActiveRecord对象,则不需要包含模块
您也可以使用attr\u accessor
或自己编写getter/setter,但是您会丢失所有围绕您习惯的属性的方法,比如DirtyMethods(route\u id\u changed?)和强制 您可以使用:
f.hidden_field :route_id, value: @route.id
当您希望从模型上的属性创建隐藏字段时,该属性由f
表示
由于您试图为不是由f
表示的模型上的属性的值创建一个隐藏字段,请使用hidden\u field\u tag
,类似于:
hidden_field_tag :route_id, @route.id
有关更多信息,请参阅。隐藏字段是一个合理的想法。你拥有的东西不是一个隐藏的领域。看一看。你能添加更多关于你想用这个参数做什么的信息吗?也许能给你更具体的想法。另一个选项是,如果表单处于post模式,则可以在表单的url上添加参数action@jvillian你说得对。我使用了一个隐藏字段,我只是将其更改为文本字段,以确保值实际存在。我把这行复制粘贴在这里,但忘了把它改回来。我的坏。f.hidden\u字段
仍然不为您工作?(似乎不应该)你试过隐藏的字段标签吗?@jvillian哦。我不知道你可以在表单中为
使用隐藏字段标记。是的,这解决了我的问题。请创建一个答案,以便我可以将其标记为正确,并感谢您的帮助!