簡體   English   中英

在Rails應用程序中,我的Javascript應該在哪里,以及如何調用它?

[英]In a Rails application, where should my Javascript be and how do I call it?

只是另一個有問題的Rails新手。 我在部分.html.erb中有一些Javascript(動態),但是在另一篇文章中被告知,這實際上不是Javascript應該去的地方。 它是動態的,因此我可以找到元素的正確ID,並且僅將javascript應用於該特定元素。 我認為可以參數化javascript並將其放在外部文件中,並以某種方式從我的部分中調用它。 那是正確的方法嗎? 如果是這樣,我該怎么做? 如果沒有,我該怎么辦?

我有一個嵌套資源。 在父資源的節目中,我正在使用AJAX添加子項而沒有離開此頁面。 我有很多Javascript魔術,每個添加的孩子都需要執行。

_care_point.html.erb部分

<script>
  $(function() {
    $("#<%="node_#{care_point.id}" %>").live('dblclick', function(){
      console.log('moo');
      jQuery(this).hide();
      jQuery('.close', jQuery(this).parent()).show();
      jQuery('.node_input', jQuery(this).parent()).show();
    });
  });
</script>
<div id=<%="care_point.#{care_point.id}" %> class='draggable node_chin'>
  <div id=<%="node_#{care_point.id}" %> class='node'><%= care_point.body %>
  </div>
  <textarea class='node_input'><%= care_point.body %></textarea>
  <a class='close' href='#'>Close</a>
</div>

謝謝,

埃里克

在您的部分中:

<div id=<%="care_point.#{care_point.id}" %> class='draggable node_chin care_point'>
  <div id=<%="node_#{care_point.id}" %> class='node'><%= care_point.body %>
  </div>
  <textarea class='node_input'><%= care_point.body %></textarea>
  <a class='close' href='#'>Close</a>
</div>

在public / javascripts / application.js(您的js應該在的位置)

$(function() {
  $(".care_point").live('dblclick', function(){
    console.log('moo');
    jQuery(this).hide();
    jQuery('.close, .node_input', jQuery(this).parent()).show();
  });
});

使用Rails已有數年,因此我從未在視圖中動態生成JS。 我想不出一個需要用到的好用例(如果您能想到一個用例,請發表評論)。

我遇到過類似的情況,需要按ID引用DOM元素(例如,一個期望ID作為參數的自定義庫)。 在這種情況下,我通常要做的是生成Erik指出的內聯javascript,或者更混合的解決方案是添加一個類,然后遍歷該類的所有元素,獲取其ID,並將其綁定到相應的事件(或執行任何操作您需要提供ID)。

我也希望看到一個最佳實踐 ……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM