什么是在Rails中的部分内容共享标记的简洁方法?

时间:2015-07-05 13:09:29

标签: ruby-on-rails ruby-on-rails-4 dry

假设我有一个图像查看器部分,则向访问者和管理员显示图像查看器。管理员应该有其他按钮来删除/编辑图像,而访问者和管理员的其他所有内容都保持不变。什么是一个干净的方法保持观看DRY而不会在任何地方image_partial.html.haml语句堵塞它们?

以下是我目前的做法:

.image %img if is_admin? .admin-stuff-here

Times Called on Enquiry |  ContractNumber | Enquiry  | Percentage to Display

          1                101            Claim         14.28%
          1                101           Complaint      85.71%
          2                101           Complaint      85.71%
          3                101           Complaint      85.71%
          4                101           Complaint      85.71%
          5                101           Complaint      85.71%
          6                101           Complaint      85.71%

在不重复相同标记的情况下,使用分离的视图(对于管理员/访问者)获得相同结果的干净方法是什么?

1 个答案:

答案 0 :(得分:2)

如果所有管理功能都嵌套在单个DOM元素中(不会遍布整个HTML _image_partial.haml.erb文件),则可以有条件地包含一些_admin_controls.haml.erb部分。

将这些嵌套在目录中可能是有意义的。

- app/views/_image_viewer
  |- viewer.haml.erb
  |- admin_control.haml.erb

然后在_viewer.haml.erb

之内
.image
  %img
    = render partial "_image_viewer/admin_control" if is_admin?