2014-09-06 11 views
1

我有一個使用ajaxify_rails Gem的Rail 4應用程序。所以只有我的內容被加載,但不是整個頁面。現在我已經定義了一個幫助器方法,我想在每個視圖中調用第一條語句。我目前的做法是在每個視圖中都明確地做到這一點,但這是非常重複的代碼。所以我有很多意見都開始默認情況下在每個視圖中調用Rails助手作爲第一個參數

= rails_helper_method 
... 

有沒有辦法對這一隱含在每一個觀點,或者說我只是一遍一遍打電話了嗎?

回答

2

這是layouts的用途。 只需在您的佈局中調用您的幫助器方法,並且由於您的視圖將使用該佈局,因此您的幫助器方法也將被調用。在您的佈局文件,你可以這樣做:

%body 
    = rails_helper_method 
    = yield 

更新:

如果你看一下ajaxify_rails repo,你可以調用application_controller其ajaxify_extra_content方法,然後將其綁定到ajaxify事件。你可以做這樣的事情:

def ajaxify_extra_content 
    ... your extra html ... 
end 

然後將它綁定這樣的:

$(document).on 'ajaxify:content_inserted', -> 
    $('#id_of_some_container_in_view').html $('#ajaxify_content #id_of_some_container_in_view').html() 

您也可以直接致電你的助手這樣的:

def ajaxify_extra_content 
    view_context.your_helper 
end 

PS我沒有測試它,但這應該爲你工作

+0

在正常的Rails應用程序,這將工作,但由於ajaxify_rails,佈局不重新當用戶點擊一個鏈接時進行確認,所以在渲染新內容時不會調用幫助器方法。 – tbraun89 2014-09-07 00:15:27

+1

謝謝,這會起作用,我也發現了另一種解決方案,Gem'rails-ajax'可以根據一個請求更新多個不同部分的容器,因此您可以獲得相同的結果。 – tbraun89 2014-09-07 09:59:40

相關問題