باستخدام Link_to في الفصل في مساعد القضبان
-
19-09-2019 - |
سؤال
لدي مساعد قضبان باستخدام الهيكل أدناه، ولكن عندما أستخدمه، أحصل على الرسالة
undefined method 'link_to'
يتم ترتيب المساعد على النحو التالي:
module MyHelper
class Facet
def render_for_search
link_to("Value", params)
end
end
class FacetList
attr_accessor :facets
def initialize
#Create facets
end
def render_for_search
result = ""
facets.each do |facet|
result << facet.render_for_search
end
result
end
end
end
المحلول
هذا لأنه في غضون الفئة، لا تملك الوصول إلى ملزمة القالب. من أجل الاتصال render_for_search
طريقة ربما تفعل شيئا مثل
<%= Facet.new.render_for_search %>
فقط تجاوز الخاص بك initialize
طريقة لاتخاذ السياق الحالي كوسيطة. الأمر نفسه ينطبق على معايير التجزئة.
class Facet
def initialize(context)
@context = context
end
def render_for_search
@context.link_to("Value", @context.params)
end
end
ثم اتصل
<%= Facet.new(self).render_for_search %>
خلاف ذلك، حدد render_for_search
طريقة مباشرة داخل MyHelper
الوحدة ولا تلتفها في فصل.
نصائح أخرى
حاول استخدام هذا:
self.class.helpers.link_to
لأن Link_to غير محدد في نطاقك الحالي.
ما سبق سيعمل على وحدة تحكم، لكنني أظن أنه سيعمل داخل مساعد آخر أيضا. إن لم يكن ثم حاول:
include ActionView::Helpers::UrlHelper
في الجزء العلوي من المساعد الخاص بك.
لا تنتمي إلى StackOverflow