【发布时间】:2011-09-11 01:59:01
【问题描述】:
我需要为使用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(目前从git://github.com/activescaffold/active_scaffold 的rails-3.0 分支安装)以兼容。我们遇到的一个问题是搜索表不起作用。我会在我的日志文件中看到:
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)。
【问题讨论】:
-
我没有告诉 Rails 3.0.9 渲染 JS 没有模板;有没有可能是 active_scaffold 里的东西?
-
有
layouts/admin.js吗?这是奇怪的行为。 Rails 不应该在 HTML 布局中呈现 JS 模板。另一方面,如果有 JS 布局... -
@Dave Newton 这就是我的想法。它必须是 active_scaffold 中的东西。 @numbers1311407 不,没有
layouts/admin.js。我检查了响应的内容,它在 HTML 布局中包装了 RJS 模板。
标签: ruby-on-rails ruby-on-rails-3 activescaffold