如果不可用则渲染空部分

时间:2014-11-30 06:28:04

标签: ruby-on-rails haml partial

我正在重构我的代码。我在各个地方都有很多if-else语句,主要用于渲染部分。 所以,我使用下面的代码。虽然代码有效,但对于某些部分不可用的帐户类型,我收到错误。

'零'不是与ActiveModel兼容的对象,它返回有效的部分路径。

- account_type = 'Analyst' # it could be analyst/role/admin
:partial => "control-panel/add-#{account_type}"

如果部分在指定目录中不可用,有没有办法渲染空的部分?

1 个答案:

答案 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