class ApplicationController < ActionController::Base
@@baseURL = "www.url.com/something/"
def self.baseURL
@@baseURL
end
end
class SomeFrontendController < ApplicationController
end
class ApplicationController < ActionController::Base
BASE_URL = "www.url.com/something/"
end
class SomeOtherController < ApplicationController
def index
@base_url = BASE_URL
end
end
6条答案
按热度按时间djmepvbi1#
在应用程序控制器中。
当您使所有控制器继承ApplicationController时,此
@baseURL
示例变量将可在所有操作和视图中访问。rkkpypqq2#
通常情况下,所有控制器都继承自
ApplicationController
,然后可以在那里定义变量,使其可供后代使用。bxjv4tth3#
您可以在
ApplicationController
中定义一个方法,并像helper_method一样使用该方法从视图访问它。我尽量避免使用before_actions来设置变量,在控制器和视图中可以调用
base_url
方法。在
application_helper.rb
中包含此方法也是一样的。t2a7ltrp4#
Rails控制器继承自ApplicationController。请尝试将其放在此处:
6mw9ycah5#
您可以在应用程序控制器中定义类变量:
现在,在所有控制器中,您都可以访问@@baseURL或调用类方法:
但是这是脏的最好用一个常量
现在,您可以在所有控制器中访问BASE_URL或:
nszi6y056#
如果它只有一个变量,并且您确信,那么您只需要在控制器作用域内使用它,在
ApplicationController
中声明一个常量就足够了:然而,通常在应用程序的其他部分迟早需要自定义URL(和其他东西,如电子邮件地址),因此通过使用https://github.com/settingslogic/settingslogic之类的gem并将所有此类变量存储在一个位置(文件)来获得单个真实源是有用的。