我需要爲使用active_scaffold
寶石的控制器執行此操作。我們有一個控制器,它看起來是這樣的:爲什麼Rails在佈局中呈現RJS模板?
class Admin::UsersController < ApplicationController
layout 'admin'
active_scaffold :users do |config|
config.search.columns = [:first_name, :last_name]
end
end
,當我們受到on Rails的2.3.10偉大的工作,但我們升級到Rails 3.0.10。作爲升級的一部分,我必須升級active_scaffold
(目前從rails-3.0
分支git://github.com/activescaffold/active_scaffold
安裝)才能兼容。我們遇到的一個問題是搜索表格不起作用。我會在我的日誌文件中看到:
Rendered <snip>/gems/active_scaffold-25b3d724f35b/frontends/default/views/list.js.rjs within layouts/admin (923.5ms)
請注意,它使用控制器中指定的佈局呈現RJS模板。這對我來說似乎是一種不合理的違約。不應該RJS模板渲染沒有佈局默認?無論如何,我將其固定爲:
class Admin::UsersController < ApplicationController
layout :admin_layout
private
def admin_layout
respond_to do |format|
format.js { false }
format.html { 'admin' }
end
end
end
解決了搜索和分頁問題。 (RJS模板現在無需佈局,因此瀏覽器可以執行生成的Javascript)。我想我的問題是,爲什麼我必須告訴Rails它不應該使用佈局呈現RJS模板?還有更好的解決方案嗎?這對我來說太過分了(這種糟糕的黑客行爲 - 將來會破壞的黑客行爲)。
我不告訴Rails 3.0.9渲染JS w/o模板;是否有可能是active_scaffold中的東西? –
是否有'layouts/admin.js'?這是奇怪的行爲。 Rails不應該在HTML佈局中呈現JS模板。如果有另一方面的JS佈局... – numbers1311407
@Dave牛頓這就是我想的。它必須是active_scaffold中的內容。 @ numbers1311407不,沒有'layouts/admin.js'。我檢查了響應的內容,並將RJS模板封裝在HTML佈局中。 – David