У меня есть частичный шаблон, который содержит кнопку-ссылку, стиль CSS которой можно настроить с помощью передачи локальных переменных в шаблон:
# _button_create.html.erb
text_size ||= 'small'
link_to('Create', create_route_path, :method => :post, :class => text_size, ...)
# rendering button-link with defaults (small version)
render(:partial => 'button_create')
# rendering large version
render(:partial => 'button_create', :locals => {:text_size => 'large'})
При нажатии кнопка-ссылкавыполняет AJAX-запрос к серверу и, в случае успеха, заменяет себя другой кнопкой-ссылкой:
# _button_destroy.html.erb
text_size ||= 'small'
link_to('Destroy', destroy_route_path, :method => :delete, :class => text_size, ...)
Все работает, когда я первоначально рендерил партиал со значениями по умолчанию.То есть, успешный запрос AJAX заменяет ссылку на кнопку «Создать / Разрушить small
» на ссылку на кнопку «Разрушить / Создать small
».
Однако, учитывая, что я первоначально отображаю «большую» версию частичногошаблон, когда я щелкаю по кнопке-ссылке, тогда, при успехе AJAX, кнопка-кнопка заменяется ее «маленькой» версией (потому что шаблон не знает, что text_size
равно large
и по умолчанию small
).
В случае успеха AJAX я хотел бы вернуть "большую" версию ссылки на кнопку, когда text_size
изначально отображается large
, а также "маленькую" версию, когда она изначально отображаетсяsmall
.
Я знаю, что мог бы отправлять данные "локальных переменных" с помощью AJAX (в качестве параметров), чтобы частичный шаблон знал (хотя и контроллер), что text_size
равен large
(например, путем передачизначения в hidden_field_tag
), но я ищу лучшее решение для обработки вещей, если таковые имеются.
Мои сомнения:
- Является ли обычной практикой отправка данных "локальных переменных", таких как
text_size
, в качестве параметров на сервер, например, вместе с данными модели? - Есть ли эффективная практика или шаблон для решения описанной выше ситуации?
- Есть ли название для ссылки на это?