Мне действительно не нравятся любые виды дублирования, но иногда это самое простое решение.
В вашем случае я могу сказать, что
- администратор имеет возможность редактировать поля (встроенные?)
- администратор видит больше полей
Обычно я использую драгоценный камень on_the_spot для встроенного редактирования, а затем работаю с таким помощником:
def on_the_spot_edit_if_allowed(object, field, options)
if current_user.admin?
on_the_spot_edit object, field, options
else
object.send(field)
end
end
И в этом случае мои взгляды становятся чем-то вроде
Title: <%= on_the_spot_edit_if_allowed book, title %>
<%- if current_user.admin? %>
<!-- Awesome extra info for admins -->
<% end %>
Author: <%= book.author %>
<%- if current_user.admin? %>
<!-- Awesome extra info for admins -->
<% end %>
Если это невозможно (ограничения дизайна / пользовательского интерфейса) невозможно, я бы изменил это представление следующим образом:
Title: <%= on_the_spot_edit_if_allowed book, title %>
Author: <%= book.author %>
<%- if current_user.admin? %>
<%= render :partial => 'extra_admin_fields'
<% end %>
Надеюсь, это поможет.