在管理控制器中访问Helper方法

时间:2016-03-09 15:31:53

标签: ruby-on-rails helper

所以我有以下

# app/helpers/experts_helper.rb

module ExpertsHelper
....
def twitter_link(expert)
  link_to expert.twitter_url, class: 'social-link', target: '_blank' do
   content_tag(:i, '', class: 'fa fa-twitter expert-fa')
  end
end

def linkedin_link(expert)
  link_to expert.linkedin_url, class: 'social-link', target: '_blank' do
    content_tag(:i, '', class: 'fa fa-linkedin expert-fa')
   end
end
end

我可以在views/experts/...内的所有观看中访问这些方法,但不能在views/admin/experts/...内的那些观看中访问这些方法?如何访问这些方法?感谢

编辑1::更正了一些拼写错误,我也希望能够在helper methods上使用这些class Admin::ExpertsController < AdminController (content omitted for brevity) end我在控制器中使用了include ExpertsHelper,但它没有解决它

编辑2:我已尝试过所有提议的解决方案,但仍然无法显示任何内容。

我已经尝试了include ExpertsHelperinclude ApplicationController.helpers.method,后者我得到了TypeError - wrong argument type Array (expected Module):,而前者我没有遇到任何错误,但我没有尝试过。{}看到页面上显示的任何内容,没有图标,没有照片,没有。我甚至尝试在module Experts内的module Experts::AdminHelper end内复制帮助方法,但仍然没有。

2 个答案:

答案 0 :(得分:1)

我希望你在寻找这个。在要访问辅助方法的控制器中添加此行。

include ApplicationHelper

答案 1 :(得分:0)

我相信您可以使用ActionView::Rendering#view_context来使用这些辅助方法。在您的控制器中,您可以像这样使用它们:

view_context.twitter_link(expert)
view_context.linkedin_link(expert)

有关详细信息和选项,请参阅this other SO question