将其他参数传递给ActiveScaffold视图

时间:2015-01-02 22:39:24

标签: ruby-on-rails activescaffold

我在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在我的控制器操作中使用默认视图?

1 个答案:

答案 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>