我想像往常一样在我的视图上使用这个控制器变量 但是
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
所以我读了......并且说我必须拥有这样的东西。但我认为最好使用我从控制器发送的内容,而不是从视图中进行模型访问。
但是
SO!???为什么不能访问使用它?谢谢你的帮助
更新
创建方法
[![enter code here][8]][8]
答案 0 :(得分:1)
出现错误的原因是您已在new
操作中加载了该数据,但未在create
操作中加载。当您尝试创建新的LeaseType
时,如果有任何错误,它会再次呈现new
操作,现在变量不具有您在new
操作中获取的值。因此,您可以编写一个before_action
,它将在new
和create
上运行并为您加载数据:
在控制器上添加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]
希望这有帮助。
答案 1 :(得分:0)