簡體   English   中英

鏈接到Rails中的Assets文件夾

[英]making a link to the assets folder in rails

想知道如何克服這個問題。 在我的Rails應用程序的主頁上,有一個圖像滑塊:

  <div id = "carousel">
    <img id ="rotate_images" src="assets/1.1.png"/>

    <div id = "back">
    <img src = "assets/arrow_back.png">
  </div>  

    <div id = "forward">
    <img src = "assets/arrow_forward.png"></div>
  </div>

圖像正確顯示。 然后,在同一應用程序的另一頁上,當我粘貼相同的代碼時,圖像沒有顯示出來。 在控制台中,我得到:

GET http://localhost:3000/users/assets/1.1.png 404 (Not Found) 

如您所知,資產文件夾不在“用戶”中,而是在“應用程序”文件夾中。 我以為制作像src =“ ../ assets / .. etc”這樣的鏈接可以做到,但不是那么幸運。 我會使用Rails代碼,例如:

 <%= image_tag("arrow_forward.png") %>

但這只會引起頭痛,因為我正在使用與我的img src屬性匹配的jQuery代碼。 如果有什么用,這里是jQuery代碼。 如果可以對其進行修改以使其與Rails image_tag方式掛鈎,那將是很好的選擇,但我真的很好奇為什么找不到正確的資產文件夾。 謝謝你的幫助。

  <script>

  $('#back').on({
      'click': function () {
          var origsrc = $(rotate_images).attr('src');
          var src = '';
          if (origsrc == 'assets/3.1.png') src = 'assets/2.1.png';
          if (origsrc == 'assets/2.1.png') src = 'assets/1.1.png';
          if (origsrc == 'assets/1.1.png') src = 'assets/1.1.png';
          $(rotate_images).attr('src', src);
      }
  });

  $('#forward').on({
      'click': function () {
          var origsrc = $(rotate_images).attr('src');
          var src = '';
          if (origsrc == 'assets/1.1.png') src = 'assets/2.1.png';
          if (origsrc == 'assets/2.1.png') src = 'assets/3.1.png';
          if (origsrc == 'assets/3.1.png') src = 'assets/3.1.png';
          $(rotate_images).attr('src', src);
      }
  });
  </script>

您在這里有幾種選擇...

我假設您正在運行Rails3。我認為,當您在生產中運行資產管道時,您將獲得已消化和未消化的資產(image-HASHDIGEST.png)。 因此在您的視圖代碼和JavaScript中的硬編碼路徑中使用資產助手應該是安全的。

由於您是指<script>標記中的代碼,因此我認為這也是您的視圖中提供的一些代碼,因此您也應該可以在其中使用erb語法。

使用Asset-pipeline時,您也可以使用erb預處理javascript。 這通常是通過將.erb附加到文件(some.js.erb)上,然后在其中也使用asset-helper來完成的。 這可能是最干凈的解決方案。

盡管如此,我認為資產流水線吸引了很多人,因為它給Rails引入了一個全新的高度復雜性,這對於大多數應用程序來說是壓倒性的並且也是過度設計的。

暫無
暫無

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

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