Rails通过不同对象的形式将参数从一个控制器动作传递到另一个

时间:2018-08-07 20:08:36

标签: ruby-on-rails forms parameters

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

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

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

有什么建议吗?

编辑:更多信息。因此,我们在此编辑操作中查看的是BusStop。需要注意的重要一点是,通过名称或通过BusStop上的停靠点列表进行搜索,有两种到达Route的方法。现在,为了方便用户,我想做的是一个“保存并下一个”按钮,但是我们只希望在通过路线列表到达停靠点时使用该选项。即提交表单并重定向到下一个BusStop。但是,为了找到下一个BusStop,我们需要两件事。 Route.idBusStopsRoute.directionBusStopsRoutes有两个方向,而BusStop可能有两个方向,也可能没有,因此我们不能通过停靠来推断方向。同样,我们无法通过Route来推断BusStop,因为BusStopRoute通过BusStopsRoute具有多对多关系。

稍微讲一下,我在Route.id编辑操作中有BusStopsRoute.directionBusStop的值。我需要在BusStop更新操作中找到这些值,以查找下一个BusStop

2 个答案:

答案 0 :(得分:1)

您使用此:

c = {'Term': pd.Series(['Cool', 'Cool', 'New','New','New','Very', 'Very','Very','Very','Very'])}
df_2 = pd.DataFrame(c)
print df_2


        Term 
0       Cool 
1       Cool    
2       New   
3       New   
4       New    
5       Very   
6       Very   
7       Very   
8       Very   
9       Very   

当您要根据由f.hidden_field :route_id, value: @route.id 表示的模型上的属性创建隐藏字段时。

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

hidden_field_tag

有关更多信息,请参见docs

答案 1 :(得分:-2)

您可以使用ActiveModel::Attributes API。

在该对象的类中,

class Voxorin < ApplicationRecord
  attribute :route_id
end 

假设您的对象是ActiveRecord对象,则不需要包含模块。

您还可以使用attr_accessor或自己编写getter / setter方法,但是您会丢失所有围绕属性的方法,例如DirtyMethods(route_id_changed?)和强制方法。