我想知道如何界定我的观点。我想根据组织有自定义主题,我可以直接在show / index操作上使用渲染......这样可行,但我必须覆盖我的应用程序上的很多操作。我更喜欢在控制器级别上执行此操作,并尝试使用prepend_view_path
执行此操作,但除了变量为undefined之外没有。
class EditionsController < ApplicationController
helper_method :current_organization
prepend_view_path "app/views/#{current_organization.slug}/editions" #doesn't work
def show
@edition = Edition.find(params[:edition_id])
@page = @edition.pages.first
render template: "#{current_organization.slug}/editions/show" #works
end
有什么想法吗?
还试过:(同样的错误)
append_view_path(File.join(Rails.root, "app/views/#{current_organization.slug}"))
答案 0 :(得分:2)
自定义主题取决于组织
当然,定义自定义layouts
&amp;每个公司CSS
而不是完全不同的视图集?
-
我个人会这样做:
#app/layouts/application.html.erb
<%= stylesheet_link_tag "application", controller_name ... %>
这将使我能够根据主题设置不同页面的样式。显然是对你想要的东西的限制,但我希望它能说明你如何模块化你的控制器等
-
如果您想创建不同的“主题”(每个租户的视图结构完全不同的IE),您需要使用prepend_view_path
帮助器,如here所述:
#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
prepend_view_path("views/#{current_organization.slug}")
end
答案 1 :(得分:0)
尝试删除editions
prepend_view_path
prepend_view_path "app/views/#{current_organization.slug}"
确保添加的方式。如果它没有添加before_filter