Ruby on rails render partial不从主窗体视图执行javascript



我正试图从主视图表单执行JavaScript,当我点击渲染部分中的复选框时,从渲染部分执行JavaScript,但该JavaScript没有执行。只有当我在主视图中复制分部的内容时,它才会执行。我搜索过这个网站,但找不到答案。这就是我所拥有的,例如:

app/views/people/main_form.html.erb

<script>
  view something in partal
  $('people_visible_by_default').click(function(){
    alert("Can you see me");
  });
</script>
<%= bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f| %>
   <%=  render partial: 'form_partial', locals: { f: f } %>
<% end %>

要在app/views/people_form_partial.html.erb 中执行的复选框

<%= f.check_box :visible_by_default, data: { preview_type: 'none' } %>
clicking on the visible_by_default checkbox doesn't show the alert as I expected.  How do I get it to execute when it is in the main_form.html.erb

我猜您正在使用复选框的id("people_visible_by_default")作为jQuery中的选择器。但你忘了在它前面加上"#"。

所以,试试

$('#people_visible_by_default').click(function(){
  //your code
});

$('#your_form_ID').on('click', '#people_visible_by_default', function(){
  //your code
});

首先,在加载主页面时应该使用选择器。Js在加载主页时迭代dom元素。所以,如果您通过事件来呈现某个东西(页面加载开始时不存在的东西),就没有js处理程序。但您可以使用渲染部分的父元素的选择器。例如:

view.html.slim

.parent_class
  = bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f| 
   =  render partial: 'form_partial', locals: { f: f } 

view.js.coffee

$('.parent_class').on 'click', '#people_visible_by_default', (e) ->
  do something 

试试这个。我希望它能帮助你

最新更新