Я пытаюсь создать несколько динамических вспомогательных методов, таких как:
show_admin_sidebar
show_posts_sidebar
show_users_sidebar
Пока у меня есть это в моем файле helper.rb:
#spits out a partial
def show_sidebar(name, show_sidebar = true)
@content_for_sidebar = render :partial => "partials/#{name}"
@show_sidebar = show_sidebar
end
def show_sidebar?
@show_sidebar
end
В моем файле макета приложения у меня есть это: (NB - я использую HAML):
- if show_sidebar?
= yield(:sidebar)
Это позволяет мне сказать следующее в моих взглядах:
- show_sidebar(:foo)
- show_sidebar(:bar)
И это приводит к желаемому частичному.
Проблема в том, что я могу добавить только одну боковую панель на страницу. Итак, я считаю, что мне нужны динамические методы, такие как: show_admin_sidebar, show_foo_sidebar.
Итак, я попытался сделать это:
def show_#{name}_sidebar(show_sidebar = true)
@name = name
@content_for_#{@name}_sidebar = render :partial => "partials/#{@name}"
@show_sidebar = show_sidebar
end
а затем в моем макете:
- if show_sidebar?
= yield("{@name}_sidebar")
Но рельсам это совсем не нравится.
Я перепробовал почти все, что могу придумать в файле помощника, и ничего не работает.
Причина, по которой я использую вспомогательные методы для этого, заключается в том, что я хочу, чтобы мой div контента был на 100% ширины страницы, если только не имеется боковой панели, в этом случае основное содержимое переходит в меньший div, а содержимое боковой панели переходит в свой собственный. ..
Если я не могу заставить это работать, то я могу легко решить проблему, просто добавив частичные значения вручную, но я бы хотел обдумать это ...
Кто-нибудь имел опыт работы с подобными вещами?