Я хочу написать объект страницы для страницы с динамическим разделом, который переключается при нажатии кнопки. Поскольку вид не одинаков, логически есть три секции, из которых одновременно можно увидеть только одну.
<Div id=view1/> or
<Div id=view2/> or
<Div id=view3/>
MyPage < SitePrism::Page
[Other elements and sections]
[Dynamic section or element]
End
Я думал о программировании объекта страницы несколькими способами.
1) Создайте 3 объекта страницы для каждого представления, которое он может обрабатывать. Это не масштабируется, потому что количество просмотров может увеличиться. Также количество таких динамических разделов может увеличивать общее количество различных объектов страницы в геометрической прогрессии. То есть:
MyPage1 с разделом, указывающим на view1. Аналогично для просмотра 2 и 3.
2) иметь все возможные разделы в одном объекте. Это прекрасно работает, но объект страницы не выглядит интуитивно понятным.
MyPage < SitePrism::Page
Section :view1, Section::View1, "#view1"
Section :view2, Section::View2, "#view2"
Section :view3, Section::View3, "#view3"
End
3) определите метод, который заботится о создании раздела во время выполнения. Таким образом, моя страница не имеет раздела во время загрузки, но после загрузки страницы я вызываю соответствующий метод, который загружает раздел на странице. (это не реализовано, но я думаю, что это может сработать, хотя для этого потребуется столько методов в объекте страницы, сколько таких динамических разделов)
Образец:
MyPage < SitePrism::Page
Def self.createView(type)
If type == view1
Section :view1, Section::View1, "#view1"
Elsif type == view2
(Like above for view 2)
Else
(Like above for view 3)
End
End
End
Если вы столкнулись с подобной проблемой, я хотел бы знать, есть ли какой-либо другой подход, или дайте мне знать, если вы предвидите какие-либо проблемы с третьим подходом.