2012-11-23 42 views
0

我將format.js添加到我的控制器,但仍然無法在查看我的索引頁時獲取index.js.erb中的js。我唯一能想出的就是它必須是因爲型號名稱。我不得不Javascript未執行(我包含format.js)

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'business', 'businesses' 
end 

添加到我的是inflections.rb文件...因爲我的模型被稱爲業務。

我的意見/ JS位於景色/企業/ *

請幫我拉我的頭髮之前!

所有我在index.js.erb的文件是:

alert(1); 

顯然我們的目標是,我會得到一個警告,當我終於得到這個問題的固定,讓我知道這是工作。

回答

3

你打電話給你的索引頁怎麼樣?如果您從瀏覽器訪問索引頁面,則不會呈現index.js。這是使用格式背後的關鍵。你將不得不使用javascript調用你的索引方法(類似於ajax調用)。你的型號名稱與它沒有任何關係。

+0

好吧,當你訪問路由到/ model/index的頁面時,它應該在頁面加載後執行/app/views/pluralized-model/index.js.erb ...與編輯等其他操作相同(然後執行/app/views/pluralized-model/edit.js.erb)。問題是,這沒有發生。 – Brandon

+0

它不是那樣的。你正在弄錯概念。 respond_to塊根據請求的格式呈現正確的輸出。所以如果你調用app_name/clients/1 /編輯它將執行format.html,當你調用app_name/clients/1/edit.js時,它將執行format.js塊。 –

+0

呵呵,我確實知道,在...之前,仍然沒有解釋爲什麼edit.js.erb文件在編輯操作被調用時不會執行。我知道這是事實,因爲我現在有兩個其他的網站正在運行,而我正是這樣做的。 – Brandon

0

Javascript執行與您的模型名稱無關。也不包含基於控制器或模型的名稱完成的JS文件。如果您正在使用資產管道,則需要以下內容。

假設index.js是/assets/javascripts/index.js,添加以下到/app/assets/javascripts/application.js

//= require ./index 

如果你不明白這作品,你可能希望通過資產管道的Ruby on Rails指南,在這裏找到:http://guides.rubyonrails.org/asset_pipeline.html

作爲一個側面說明,與你的inflections用法,我會建議,如果你打算使用像Rails ,嘗試使用它隨附的約定。它將在未來爲你節省心痛。爲您的模型業務命名,以便您的表被稱爲企業。除非你真的想要這樣的東西:

has_one :businesses 
+0

再次閱讀我的文章,我的模型不稱爲企業,它被稱爲商業。我不得不實施自定義變調,因爲rails有一個已知問題,以單數形式結尾的單詞。至於文件位置,js文件是/app/views/businesses/index.js.erb,當我瀏覽路由到企業#索引的url時應執行該文件。它雖然沒有執行。 – Brandon

+0

對不起,我誤解了你的問題。如果您希望在HTML操作觸發後觸發JS操作,則必須在HTML中嵌入JS以在加載HTML時請求JS。 –