在Rails中创建帮助程序时的未定义方法

我试图创建一个帮助模块,以便能够设置页面的标题。 当然它不起作用( 参考 )我必须在控制器中定义一些东西,我的控制器可以看到我的助手方法吗?

未定义的方法

Gitlink: works_controller.rb

def index set_title("Morning Harwood") @works = Work.all respond_to do |format| format.html # index.html.erb format.json { render json: @works} end end 

在application_helper.rb中 :

 module ApplicationHelper def set_title(title = "Default title") content_for :title, title end end 

在布局work.html.erb中 :

   

Rails中的助手是视图中可用的方法(如果包含它们,则为控制器),可以避免视图中的代码重复。

我的代码中的帮助程序示例是一个为facebook登录按钮呈现html的方法。 这个按钮实际上比用户看到的更多,因为它是一个带有一些附加信息的隐藏forms,等等。因此我想用它来制作一个帮助方法,所以不是多次复制10行代码,我可以调用一个单一方法。 这更干嘛。

现在,回到你的例子,你想要做两件事

  • 显示页面
  • 在页面顶部添加

    标题。

我现在看到链接的答案不够明确。 你确实需要帮助,但你也需要打电话给它! 所以

 # application_helper.rb def set_title(title = "Default title") content_for :title, title end # some_controller.rb helper :application def index set_title("Morning Harwood") end 

然后在布局的视图中,您可以使用:

  <%= content_for?(:title) ? content_for(:title) : 'This is a default title' %>< ... 

<%= content_for?(:title) ? content_for(:title) : 'This is a default title' %>