Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails通过不同对象的形式将参数从一个控制器动作传递到另一个控制器动作_Ruby On Rails_Forms_Parameters - Fatal编程技术网

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'

有什么建议吗

编辑:更多信息。因此,我们在这个编辑操作中看到的是一个
总线停止
。需要注意的一件重要事情是,有两种方法可以到达
公交站点
,或者通过名称搜索,或者通过
路线上的站点列表
。现在,为了方便用户,我想做的是有一个“保存并下一步”按钮,但我们只希望在通过路线列表到达站点时使用该选项。即提交表单并重定向到下一个
总线站
。然而,为了找到下一个
公共汽车站
,我们需要两件事。A
Route.id
和A
BusStopsRoute.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哦。我不知道你可以在
表单中为
使用
隐藏字段标记。是的,这解决了我的问题。请创建一个答案,以便我可以将其标记为正确,并感谢您的帮助!