gpt4 book ai didi

ruby-on-rails - 如何拦截rails的模板渲染

转载 作者:行者123 更新时间:2023-12-04 22:50:53 25 4
gpt4 key购买 nike

我有一个应用程序为多个网站提供服务。
与 Stack Exchange 类似,这几个站点的行为非常相似。

鉴于以下 View 目录结构:

views/
shared/users/index.html.erb
app1/users/index.html.erb
app2/users/

如何在 Rails 中重写默认模板渲染,以便
  • 当 App1 的 UsersController#index 被调用时,它呈现 app1/users/index.html.erb
  • 当 App2 的 UsersController#index 被调用时,它意识到没有 index.html.erb 模板,因此在引发丢失模板错误之前检查 shared/users/index.html.erb

  • 提前致谢

    最佳答案

    我知道您已经接受了这个答案,但我认为您不需要创建自己的模板解析器。

    如果我正确理解了您的问题,那么您正在尝试根据应用程序当前状态的某些方面来“主题化”您的 View 。我以前使用这个花花公子的小 Controller 方法做了同样的事情:

    prepend_view_path "app/views/#{current_app_code}"

    将其放入应用程序 Controller 中的 before_filter 中,您的所有 Controller 都将遵守:
    class ApplicationController < ActionController::Base
    before_filter :prepend_view_paths

    def prepend_view_paths
    prepend_view_path "app/views/#{current_app_code}"
    end

    end

    现在,如果“app1”是当前应用程序,则在请求“/users”时,rails 将首先查找“app/views/app1/users/index.html.erb”。

    如果在那里找不到它,它会回滚到“app/views/users/index.html.erb”的默认位置。

    希望这给你另一种选择。

    关于ruby-on-rails - 如何拦截rails的模板渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6055319/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com