我想在不同的页面之间分享一个结帐弹出窗口(事件,视频会议......),所以我创建了一个阴影元素/views/shared/_checkout.html.erb,然后插入<%=渲染“共享/结帐”%>在我的页面中。
未捕获的ReferenceError:未定义popup_payment
所有的html和javascript都是这个共享页面。 我只是无法理解为什么从我的页面(事件,视频......)我无法从此共享组件调用javascript。
当我检查源时,html和javascript存在。我除了渲染/渲染部分代表注入代码,我错了吗?
我如何在ERB中保留DRY - 不要重复自己? 并且元素/ javascript在页面之间进行通信并包含javascript?
这是一些伪代码示例: pageA.html.erb
<%= link_to image_tag('pinandchip.png', size: '18x18'), '#', onclick: 'popup_payment();', class: "btn flat" %>
...
查看/共享/ _popup.html.erb
<script>
function popup_payment() {
}
</script>
答案 0 :(得分:0)
您可以尝试将类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
的控制器操作才能获得正确的标记。
如果没有看到更多代码,很难说清楚。
答案 1 :(得分:0)