active_scaffold
我需要为使用gem的控制器执行此操作。我们有一个看起来像这样的控制器:
class Admin::UsersController < ApplicationController
layout 'admin'
active_scaffold :users do |config|
config.search.columns = [:first_name, :last_name]
end
end
这在我们使用 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 模板?有没有更好的解决方案?这对我来说感觉太过分了(糟糕的 hack ——那种将来会被破坏的 hack)。