0
레일즈 헬퍼를 리팩터링하고 빵 부스러기 및 탐색 메뉴 로직을 별도의 클래스로 이동하려고합니다. 하지만이 수업에서는 params
, 해시 등을 사용할 수 없습니다. 다른 클래스 사이에서 매개 변수를 전달하는 것은 좋지 않은 생각입니다. 어떻게 피할 수 있습니까? 예를 들어
나는이 :Rails 헬퍼 클래스에서 매개 변수 전달
module NavigationHelper
def nav_item(name, path, inactive = false)
NavItem.new(params, name, path, inactive).render
end
class NavItem
include ActionView::Helpers
include Haml::Helpers
def initialize(params, name, path, inactive)
init_haml_helpers
@params = params
@name = name
@path = path
@inactive = inactive
end
def render
capture_haml do
haml_tag :li, item_class do
haml_concat link_to @name, @path
end
end
end
def item_class
klass = {class: 'active'} if active?
klass = {class: 'inactive'} if @inactive
klass
end
# Class of the current page
def active?
slug = @path.gsub /\//, ''
@params[:page] == slug || @params[:category] == slug
end
end
end
그들은 의존성이며 종속성 관리는 까다로운 문제입니다. 이 방법은 해킹하지 말고, 메소드에서 args는 자신이 정말로 필요한 것을 생각하도록 강요합니다. – apneadiving