Ruby on rails 有条件地渲染视图(如果存在)?如何从控制器中的第二个方法调用render?

Ruby on rails 有条件地渲染视图(如果存在)?如何从控制器中的第二个方法调用render?,ruby-on-rails,Ruby On Rails,我试图呈现一个自定义部分,如果它存在的话,因为我用一个代码库运行多个网站。这些视图通常是相同的,但有时它们差异很大,因此更容易渲染自定义视图 有人知道如何从下面这样的方法调用render吗?我遇到的问题是,在调用render之后必须调用return,但我必须在“index”方法中调用return,而不是在“render\u custom\u view\u if\u exists”方法中调用return。我似乎找不到一个聪明的方法来自动检查视图是否存在并渲染它,因为我必须手动进入每个方法以调用re

我试图呈现一个自定义部分,如果它存在的话,因为我用一个代码库运行多个网站。这些视图通常是相同的,但有时它们差异很大,因此更容易渲染自定义视图

有人知道如何从下面这样的方法调用render吗?我遇到的问题是,在调用render之后必须调用return,但我必须在“index”方法中调用return,而不是在“render\u custom\u view\u if\u exists”方法中调用return。我似乎找不到一个聪明的方法来自动检查视图是否存在并渲染它,因为我必须手动进入每个方法以调用return来取消渲染默认视图

class ApplicationController
  after_action :render_custom_view_if_exists

  def render_custom_view_if_exists 
    render "#{path}" if lookup_context.template_exists?("#{path}") 
    return true
  end
end

class UsersController < ApplicationController
  def index
    @users = User.all
  end
end



ERROR: Render and/or redirect were called multiple times in this action. 
Please note that you may only call render OR redirect, and at most once per action. 
Also note that neither redirect nor render terminate execution of the action, 
so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
类应用程序控制器
操作后:如果存在,则呈现自定义视图
def render_custom_view_(如果存在)
如果查找上下文模板存在,则呈现“#{path}”(“#{path}”)
返回真值
结束
结束
类UsersController
您可以使用

看起来渲染局部效果要容易得多。您可以拥有一个共享索引模板页面,然后在该视图中可以有条件地呈现不同的部分。