我在Rails 3项目中使用ActiveScaffold。我有一个布局,产生默认的AS视图,配置方式如下:
布局/ admin.html.erb
<%= render :partial => "layouts/admin_header" %>
[some html]
<%= yield %>
[more html]
<%= render :partial => "layouts/admin_footer" %>
然后我使用BaseController,它呈现这个布局
class Admin::BaseController < ApplicationController
[some global settings / restrictions]
layout "admin"
end
现在,在我的模型特定控制器中,我只使用:
class Admin::UsersController < Admin::BaseController
active_scaffold :user do |config|
config.columns[:id].label = "#"
[more config]
end
def conditions_for_collection
[setting some conditions]
end
end
这一切都很好。现在我想做的是传递并在布局/管理视图中显示一个参数。
通常在控制器动作@my_var = params[:some_param]
中设置实例变量就足够了,但控制器动作在AS内部。如果我将它设置在其他地方,它将不会传递给视图。所以我尝试实现控制器操作(我想更改用户列表操作的显示):
def list
@my_var = "test"
render :active_scaffold => "users"
end
我希望能够告诉AS使用它的默认视图来使用render :active_scaffold => "users"
呈现列表,但不幸的是,这不起作用,我正在
ActionView::MissingTemplate
Missing template admin/users/index, admin/base/index, application/index, active_scaffold_overrides/index with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :haml]}
如果我省略了渲染调用,我会得到相同的结果。所以我的问题是:如何在不覆盖控制器方法的情况下传递参数,或者指示AS在我的控制器操作中使用默认视图?
答案 0 :(得分:0)
如果您找到合适的doc page:
,这很简单def list_respond_to_html
@my_var = "test"
render :action => :list
end
默认情况下,ActiveScaffold会响应html,json,js,xml和yaml mime。方法格式为<action>_respond_to_<format>