Рендеринг пользовательских шаблонов с помощью AJAX - PullRequest
0 голосов
/ 05 марта 2019

У меня есть частичный шаблон, который содержит кнопку-ссылку, стиль 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), но я ищу лучшее решение для обработки вещей, если таковые имеются.

Мои сомнения:

  1. Является ли обычной практикой отправка данных "локальных переменных", таких как text_size, в качестве параметров на сервер, например, вместе с данными модели?
  2. Есть ли эффективная практика или шаблон для решения описанной выше ситуации?
  3. Есть ли название для ссылки на это?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...