визуализация (частичная) и область видимости между элементами - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть всплывающее окно оформления заказа, которым я хочу поделиться на разных страницах (событие, видео-встреча ...), поэтому я создаю заштрихованный элемент /views/shared/_checkout.html.erb и вставляю <% = render "shared / checkout"%> на моих страницах.

Uncaught ReferenceError: popup_payment не определена

Все html и javascript это общие страницы. Я просто не могу понять, почему со своих страниц (событие, видео ...) я не могу вызвать javascript из этого общего компонента.

HTML и Javascript присутствует, когда я проверяю источник. Я исключал, что частичное рендеринг / рендеринг выполнял какое-то внедрение кода, я не прав?

Как я могу сохранить СУХУЮ - Не повторять Себя - в ERB? А элементы / javascript сообщают о странице между неделями и включенным javascript?

Вот пример псевдокода: pageA.html.erb

<%= link_to image_tag('pinandchip.png', size: '18x18'), '#', onclick: 'popup_payment();', class: "btn flat" %>

...

просмотр / Shared / _popup.html.erb

<script>
function popup_payment() {
}
</script>

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Вы уверены, что ваша функция javascript загружена на всех страницах?

На этот вопрос ответьте, как использовать глобальные функции javascript в проектах rails.

0 голосов
/ 11 мая 2018

Я нашел решение с этим драгоценным камнем:

https://github.com/komposable/komponent

это соответствует моим потребностям: создать внешние компоненты

0 голосов
/ 30 апреля 2018

Вы можете попробовать добавить класс payment-popup-button к вашей кнопке и создать новый файл в app / assets / javascripts / shared с именем popup.js.

В этом файле вы можете сделать что-то вроде:

$(document).ready(function(){
  $('payment-popup-button').click(function(e){
     e.preventDefault();
     $('#popup_payment_div').show();
  });
});

Предполагается, что вы используете jQuery и что вы уже отобразили всплывающий код где-то на странице, но он скрыт.

Если вам нужно каждый раз визуализировать свежую форму или заполнять форму динамическими данными, вам, вероятно, придется создать действия контроллера, которые respond_to и render js.erb, чтобы получить правильную разметку.

Трудно сказать точно, не видя больше кода.

...