2017-06-05 51 views
1

我在頁面(如下)中有一個腳本,它調用jQuery插件並將路徑傳遞給多個圖像。這些圖像存儲在app/assets/img/bg而不是app/assets/images在Ruby on Rails中引用圖像

<script> 
    $(".forms-wrapper").backstretch([ 
     "assets/img/bg/6.jpg", 
     "assets/img/bg/5.jpg", 
     "assets/img/bg/7.jpg", 
     ], { 
      fade: 1000, 
      duration: 7000 
     }); 
</script> 

的JavaScript功能是在位於應用程序/資產/插件/直道文件。

我能得到的功能通過改變路徑,圖像和運動圖像的工作: -

<script> 
    $(".forms-wrapper").backstretch([ 
     "../assets/7.jpg", 
     "../assets/16.jpg", 
     "../assets/19.jpg", 
     ], { 
      fade: 1000, 
      duration: 7000 
     }); 
</script> 

,因爲它們是由很多不同的地方引用我寧願不動的圖像。我試圖將腳本中的路徑更改爲./assets/img/bg/7.jpg,但這不起作用。

我似乎在軌中有相對路徑的各種問題,因爲它似乎應用了它自己的規則。

另一個示例是腳本可以更改主題顏色和圖像,但該腳本也參考了文件夾。我需要使用相對路徑(../assets/img)引用圖像文件夾,但相對路徑看起來並不正確。

var setColor = function (color, data_header) { 
    jQuery('#style_color').attr("href", "assets/css/theme-colors/" + color + ".css"); 
    if(data_header == 'light'){ 
     jQuery('.logo img').attr("src", "assets/img/themes/logo1-" + color + ".png"); 
     jQuery('#logo-footer').attr("src", "assets/img/themes/logo2-" + color + ".png"); 
     jQuery('.navbar-brand img').attr("src", "assets/img/themes/logo1-" + color + ".png"); 
    } else if(data_header == 'dark'){ 
     jQuery('.logo img').attr("src", "assets/img/themes/logo1-" + color + ".png"); 
     jQuery('#logo-footer').attr("src", "assets/img/themes/logo2-" + color + ".png"); 
    } 
} 

如何可靠地解決資產的子目錄以引用圖像?這個問題在應用程序的不同部分以不同的方式表現出來。

謝謝

+0

Ca ñ我問爲什麼這樣的路徑爲'img'文件夾? –

+0

是的 - 這是因爲它是我導入的站點的一部分,並且子文件夾中有許多資產(圖像,js,css文件等)。我最初嘗試將資產放入我的Ruby應用程序中的標準文件夾,但有各種各樣的文件引用,然後打破 – Dunny

回答

0

您必須使用Rails的

$(".forms-wrapper").backstretch([ 
    "<%= image_path('bg/6.jpg') %>", 
    "<%= image_path('bg/7.jpg') %>", 
    "<%= image_path('bg/8.jpg') %>", 
    ], { 
     fade: 1000, 
     duration: 7000 
    }); 

資產傭工這是假設的圖像在app/assets/images/img/bg文件夾中。

一般來說,你在下面app/assets/images路徑發送,這意味着

image_path('logo.png') # references app/assets/images/logo.png 

編輯:

如果您需要引用您可以添加這一個非正統的文件夾config/initializers/assets.rb(和重啓)

Rails.application.config.assets.paths << Rails.root.join('assets', 'img') 
+0

@SebastiánPalma - 已經工作了,謝謝!!感謝冰人。 – Dunny

+0

好極了,只是將它標記爲已接受來關閉這個問題 – Iceman

+0

@Iceman會做...只是最後一個問題,如果我可能......如何我可以將相同的功能應用於JavaScript函數中的路徑嗎?我很感謝您給予的幫助,所以如果您沒有時間來解決這一部分,我會關閉並進行更多的研究,這是迄今爲止最困難的部分我遇到過的Rails的問題!! – Dunny

0

請試試這個。

<script> 
    $(".forms-wrapper").backstretch([ 
    "../assets/img/bg/6.jpg", 
    "../assets/img/bg/5.jpg", 
    "../assets/img/bg/7.jpg", 
    ], { 
     fade: 1000, 
     duration: 7000 
    }); 
</script> 
+0

嗨。我已經嘗試過,但這也不起作用。它在控制檯中顯示的路徑是http://127.0.0.1:3000/assets/img/bg/6.jpg,但圖像未顯示。 – Dunny

+0

我認爲我得到的路徑正確,但rails導致路由錯誤(沒有路由匹配[GET]「/assets/img/themes/logo2-orange.png)。在rails中引用文件和文件夾看起來像ab;缺乏藝術! – Dunny