我来自 PHP 和 CakePHP 背景,我对 ruby 和 rails 很陌生。
我一直在创建一个帮助器,它可以帮助我创建一些 HTML 元素,这些元素可以让我轻松地在我正在创建的 Web 应用程序中重用。
这是我的助手片段的样子
module VehicleHelper
def mileage(vehicle)
render partial: "vehicles/shared/mileage", { locals: vehicle }
end
def manufacturer(vehicle)
render partial: "vehicles/shared/manufacturer", { locals: vehicle }
end
#and etc...
end
我会在haml中以这种方式使用它。
%h1= @vehicle.name
= mileage @vehicle
= manufacturer @vehicle
-# and etc…
我希望能够确定它的范围,这样我就不需要@vehicle
为每个函数提供一个参数。喜欢
%h1= @vehicle.name
- vehicle_block_for @vehicle do
= mileage
= manufacturer
-# and etc…
我如何实现它?这是我应该使用的正确模式吗?
编辑:我曾想过在视图中直接使用局部。然而,问题是我不仅有Vehicle
类,我还有Car
类Bike
,它们是 的子类Vehicle
,遵循 STI 模式。
这意味着我将不得不一直传递本地人,在这种情况下= render partial: 'mileage', { locals: vehicle}
或不成为配置代码。假设我已重命名文件或将其移动到某个地方,那么我必须去修改所有这些代码。