渲染(部分)和元素之间的范围

时间:2018-04-30 12:02:34

标签: ruby-on-rails erb

我想在不同的页面之间分享一个结帐弹出窗口(事件,视频会议......),所以我创建了一个阴影元素/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>

2 个答案:

答案 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_torender js.erb的控制器操作才能获得正确的标记。

如果没有看到更多代码,很难说清楚。

答案 1 :(得分:0)

您确定所有页面都加载了您的javascript函数吗?

在这个dashArray error答案中,如何在rails项目上使用全局javascript函数。