【问题标题】:RAILS... can not use controller variables on viewsRAILS ...不能在视图上使用控制器变量
【发布时间】:2017-09-20 01:04:10
【问题描述】:

我想像往常一样在我的视图上使用这个控制器变量 但是

def new
 @lease_type = LeaseType.new
 @vehicle_types = VehicleType.all
 user_id = current_user.id
 @parking = Parking.where(owner: user_id).last
 @lease_times = LeaseTime.all
end

但如果我使用它,我认为

所以我读到...并说我必须拥有这样的东西。但我认为最好使用我从控制器发送的内容,而不是从视图中访问模型。

然后我想在这里使用 de @parking.id

但是

所以!???为什么不能访问使用呢?感谢您的帮助

更新:

创建方法

参数

[![enter code here][8]][8]

【问题讨论】:

  • 你能在 LeaseTypesController 上展示你的 create 方法吗?
  • 那是创造,不是新的......
  • ??!我们有 2 种方法,这 1 种新方法是您拥有表单的地方,并在您保存时创建... u.u 我知道我可以在保存时在控制器上获取一些此类属性,例如停车 ID,但需要其他集合...

标签: ruby-on-rails variables dictionary collections controller


【解决方案1】:

出现错误是因为您已在 new 操作中加载了该数据,但未在 create 操作中加载。当您尝试创建一个新的LeaseType 时,如果有任何错误,它会再次呈现new 操作,现在变量没有您在new 操作中获取的值。因此,您可以编写一个before_action,它将在newcreate 上运行,并像这样为您加载数据:

在控制器上添加before_action

def load_data
  @vehicle_types = VehicleType.all
  @parking = Parking.where(owner: current_user.id).last
  @lease_times = LeaseTime.all
end

new 操作更改为:

def new
  @lease_type = LeaseType.new
end

并在控制器顶部添加:

before_action :load_data, only: [:new, :create]

希望这会有所帮助。

【讨论】:

  • 是的,我解决了...但是您的回答是更好的方法,非常感谢!我不知道如何删除或关闭问题。谢谢。
【解决方案2】:

看起来不错,但无法正常工作“nil”...当使用您的 load_date 方法时

所以我把 @collections 放在 new 上并直接创建并工作。

类似的东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多