Controllers
-concerns
-application_controller.rb
-display_controller.rb
Helpers
-application_helper.rb
-display_controller.rb
В display_helper.rbRails: контроллер не может найти метод в accroding вспомогательный файл
module DisplayHelper
def is_c
a + b
end
end
В display_controller.rb
class DisplayController < ApplicationController
include ApplicationHelper
include DisplayHelper
def update
@c = is_c
end
end
Проблема заключается в том, хочу ли я @c = is_c
в обновление работы действий , Я должен сделать include DisplayHelper
в контроллере, иначе результат is_c не может быть назначен на @c. Обычно метод в вспомогательном файле может использоваться в контроллере accroding без включения, но для этого ресурса, почему он не работает?
помощники предназначены для просмотра, если вам нужно включить это в контроллер, если для этого доступны методы 'include' или' helper'. Это говорит о том, что я не очень верю в полезность «помощников», поскольку они могут создать глобальную двусмысленность. – engineersmnky
@engineersmnky Спасибо за ваш ответ. По мере того, как мое приложение становится более сложным, коды в контроллере также становятся тупиковыми, знаете ли вы, как уменьшить коды в контроллере, если я не перемещу их вспомогательный файл? –
Возможно, один из самых полезных сообщений в блоге для шаблонов проектирования SRP в рельсах http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ – engineersmnky