2014-01-31 5 views
3

Я делаю приложение, поданное в Rails, оно быстро растет, и я учусь с ним. Но я не понимаю о помощниках.Помощники в Rails 4

application_helper.rb

module ApplicationHelper 
    # This file it's empty 
end 

users_helper.rb

module UsersHelper 

    def avatar 
     # Do something 
    end 
end 

customer_helper.rb

module CustomerHelper 
    # This file it's empty 
end 

Почему с точки зрения любого клиента может вызывать аватара вспомогательный метод на хелперов пользователя модуля? Затем, почему отдельные помощники во многих файлах?

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

P.S: Rails' версия 4.

+0

Вы уверены, что ваш user_helper определен следующим образом: 'module ApplicationHelper'? если это так, то вы определили метод аватара в модуле «ApplicationHelper», и именно поэтому он работает. – Surya

+0

Извините, это пример написания ошибки. –

+0

Я предполагаю, что вы написали вопрос неправильно? и users_helper имеет: 'UsersHelper', правильно? – Surya

ответ

6

Поскольку все помощники включены во все контроллеры, по умолчанию. Отдельные файлы действительно предназначены для логического разделения в этом сценарии. Вы можете изменить это поведение:

По умолчанию каждый контроллер будет включать в себя все помощники.

В предыдущих версиях Rails контроллер будет содержать вспомогательный элемент , имя которого совпадает с именем контроллера, например MyController будет , автоматически включающим MyHelper. Чтобы вернуть старое поведение, установите config.action_controller.include_all_helpers в false.

http://api.rubyonrails.org/classes/ActionController/Helpers.html

+0

Есть ли особая причина, по которой они перешли на включение всех помощников по умолчанию? Кажется ненужным. Есть ли негативное влияние на производительность для включения всех, а не только тех помощников, которые вам нужны в каждом контроллере? – WhyAyala

0

Чтобы добавить ответ Майк Кэмпбелл:


Framework

Как магии, как это, Rails представляет собой набор файлов, которые называются последовательно

Эти файлы хранятся classes, methods и т. Д .; но они все еще являются файлами. А это значит, что при запуске действия через Rails, он загружает ряд других dependent файлов, чтобы помочь ему работать (это то, что рамки)

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

Так, чтобы ответить на ваш вопрос, нет никакой реальной причины, почему хелпер распался, по крайней мере, с Rails 4

Смежные вопросы