如果控制器的操作是从其他控制器

时间:2015-07-12 16:48:03

标签: ruby-on-rails ruby

在我的rails应用程序中,我有一个控制器" home"和其他一个" admin"。从家庭控制器的索引动作我试图渲染控制器的索引动作。在管理员控制器中,我指定了要使用的布局,即" user_layout"并且家庭控制器正在使用默认应用程序布局。 以下是家庭控制器

class HomeController < ApplicationController

  def index
    if user_signed_in?

        @user = User.where(id: current_user.id)
      @user.each do |user|
        @allowed_user = user.allow
      end

        @org = Organization.where(user_id: current_user.id)
        #render :template => 'organizations/show'
      @org.each do |org|
        session[:current_organization_id] = org.id
      end
        respond_to do |format|
            format.html { render 'admin/index' }
            format.json { render json:@org}
        end 
    end
  end
end

管理员控制器

class AdminController < ApplicationController

    before_filter :authenticate_user!
    layout "user_layout"
  def index
    @org = Organization.where(user_id: current_user.id)
    @user = User.where(id: current_user.id)
      @user.each do |user|
        @allowed_user = user.allow
      end
  end
end

但是,如果在访问某些其他控制器的某些其他操作后调用admin控制器的索引操作,则应用user_layout,而不是从家庭控制器调用它时。

1 个答案:

答案 0 :(得分:1)

渲染视图donot转到控制器,因此它不会转到管理控制器并检查它应该呈现的布局。你必须在家庭控制器中指定它。

请试一试。

  format.html { render "admin/index", layout: "user_layout"  }

在您回复阻止索引操作,家庭控制器。