我正在重构我的代码。我在各个地方都有很多if-else语句,主要用于渲染部分。 所以,我使用下面的代码。虽然代码有效,但对于某些部分不可用的帐户类型,我收到错误。
'零'不是与ActiveModel兼容的对象,它返回有效的部分路径。
- account_type = 'Analyst' # it could be analyst/role/admin
:partial => "control-panel/add-#{account_type}"
如果部分在指定目录中不可用,有没有办法渲染空的部分?
答案 0 :(得分:1)
假设您已经为'Analyst'
和'Admin'
创建了部分内容,那么您可以简单地将它们放入哈希中:
- account_type_partials = { 'Analyst' => 'analyst', 'Admin' => 'admin' }
- account_type = account_type_partials['Analyst']
= render :partial => "control-panel/add-#{account_type}" if account_type
但是,我建议您将这两个变量移动到控制器的方法中,以便重用它们:
def account_type_partials
{ 'Analyst' => 'analyst', 'Admin' => 'admin' }
end
现在,在控制器的不同方法中:
@account_type = account_type_partials['Analyst'] # or 'Admin' / 'Role'
然后在视图中:
= render :partial => "control-panel/add-#{@account_type}" if @account_type