2009-05-19 2 views
2

Я создаю два связанных приложения Rails, и я замечаю много работы без сушки.Настройки приложения Rails

Например, @title поле создаются в различных методах контроллера делать то же самое, за исключением заголовок приложения, кроме, как в:

# SiteController (application 'Abc') 
def SiteController < ApplicationController 
    def index 
    @title = 'Abc' 
    end 
    def about 
    @title = 'about Abc' 
    end 
    def news 
    @title = 'Abc news' 
    end 
    def contact 
    @title = 'contact Abc' 
    end 
end 

и:

# SiteController (application 'Xyz') 
def SiteController < ApplicationController 
    def index 
    @title = 'Xyz' 
    end 
    def about 
    @title = 'about Xyz' 
    end 
    def news 
    @title = 'Xyz news' 
    end 
    def contact 
    @title = 'contact Xyz' 
    end 
end 

Что я m смотреть, чтобы сделать, есть что-то вроде

# SiteController 
def SiteController < ApplicationController 
    def index 
    @title = "#{ApplicationTitle}' 
    end 
    def about 
    @title = "about #{ApplicationTitle}" 
    end 
    def news 
    @title = "#{ApplicationTitle} news" 
    end 
    def contact 
    @title = "contact #{ApplicationTitle}" 
    end 
end 

То, что я пытаюсь понять : где должны быть определены не изменяющиеся настройки приложения. Это файл config/* rb? Это в одном из файлов .yaml?

Заранее спасибо

ответ

4

За то, как основные, как имя приложений, а также много других констант, я объявляю константы в environment.rb

Константы должны использовать константы Ruby, особенность, а не переменная классы с аксессором как markjeee предложил ,

Ссылка: pg 330, "Programming Ruby" (Pickaxe) 2nd Ed.

Ларри

+0

Спасибо. Я намереваюсь, чтобы он был постоянным, но не был уверен в environment.rb (или где-нибудь еще, если на то пошло). – dcw

2

вы можете поместить их в приложение/контроллеры/application.rb файл.

Например:

class ApplicationController < ActionController::Base 
    attr_accessor :application_title 

    def initialize 
    self.application_title = "Some application title" 
    end 
end 

Затем в контроллерах, вы можете получить доступ к титулу:

class SomeController < ApplicationController 
    def some_action 
    @title = "some text with #{application_title}" 
    end 
end 

Вы можете также объявить название приложения в качестве вспомогательного метода, поэтому он может быть доступен в ваши взгляды.

Вы также можете использовать глобальные константы и поместить их в свой файл config/environment.rb. Положите его в наиболее нижней части environment.rb, вне блока конфигурации, например:

APPLICATION_TITLE = "Some title here" 

Затем используйте константу всякий раз, когда вы установите @title переменного экземпляра в контроллере. Обратите внимание, что все должно быть закрыто, поэтому Ruby интерпретирует его как глобальную константу.

+0

Спасибо. Я знал о ApplicationController один, но не был уверен в environment.rb – dcw

1

Определение констант в файле конфигурации/environment.rb