Передать дополнительные параметры в представление ActiveScaffold

Я использую ActiveScaffold в проекте Rails 3. У меня есть макет, который дает вид 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

Вот и все работает нормально. Теперь то, что я хотел бы сделать, это передать и отобразить параметр в представлении Layouts/ Admin.

Обычно достаточно установить переменную экземпляра в действии контроллера @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 ответ

Это довольно просто, если вы найдете нужную страницу документа:

def list_respond_to_html
  @my_var = "test"
  render :action => :list
end

По умолчанию ActiveScaffold отвечает на запросы html, json, js, xml и yaml. Формат метода <action>_respond_to_<format>

Другие вопросы по тегам