元素之间的渲染(部分)和范围
我有一个结帐弹出窗口,我想在不同的页面(事件、视频会议……)之间共享,因此我想创建一个阴影元素 /views/shared/_checkout.html.erb,并在我的页面中插入 <%= render "shared/checkout" %>。
Uncaught ReferenceError: popup_payment is not defined
所有 html 和 javascript 都是这个共享页面。 我只是不明白为什么从我的页面(事件、视频……)我 无法 从这个共享组件调用 javascript。
当我检查源代码时,html 和 javascript 是存在的。我以为 render / render partial 正在执行一些代码注入,我错了吗?
我如何在 ERB 中保留 DRY - 不要重复自己 - ? 并且让元素/javascript 在页面和包含的 javascript 之间进行通信?
以下是一些伪代码示例: pageA.html.erb
<%= link_to image_tag('pinandchip.png', size: '18x18'), '#', onclick: 'popup_payment();', class: "btn flat" %>
...
view/shared/_popup.html.erb
<script>
function popup_payment() {
}
</script>
您可以尝试将类
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
来获取正确的标记。
如果没有看到更多代码,很难确切地说。
您是否确保您的 javascript 函数已在所有页面中加载?
在此 问题 中回答如何在 rails 项目上使用全局 javascript 函数。