helper_method很简单:它使视图可以使用控制器的部分或全部方法。
什么是helper?它是另一种方式吗?也就是说,它将助手方法导入到文件或模块中?(也许helper和helper_method的名字很相似。它们可能是share_methods_with_view和import_methods_from_view)
reference
发布于 2010-10-22 09:40:26
方法helper_method是显式地共享控制器中定义的一些方法,以使它们可用于视图。这适用于需要从控制器和帮助器/视图访问的任何方法(标准的帮助器方法在控制器中不可用)。例如,常见用例:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user另一方面,helper方法用于将整个帮助器导入到控制器(及其继承的控制器)提供的视图中。这意味着要做
# application_controller.rb
helper :all对于Rails > 3.1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off使所有辅助模块对所有视图可用(至少对从application_controller继承的所有控制器可用。
# home_controller.rb
helper UserHelper使UserHelper方法可用于主控制器的操作的视图。这相当于执行以下操作:
# HomeHelper
include UserHelper发布于 2022-02-26 19:17:50
助手方法用于执行在多个类中常见的特定重复性任务。这可以避免我们在不同的类中一次又一次地重复同一段代码。
下面是一个简化上述定义的示例:
下面是一段代码,你可以在视图中看到类似这样的内容:
<% if @user && @user.email.present? %>
<%= @user.email %>
<% end %>我们可以稍微清理一下,然后把它放到一个帮助器中:
module SiteHelper
def user_email(user)
user.email if user && user.email.present?
end
end然后在视图代码中,调用helper方法并将其作为参数传递给用户。
<%= user_email(@user) %>这种提取使得视图代码更容易阅读,特别是当您明智地选择帮助器方法名称时。
所以我希望这篇文章能让你明白一点。
https://stackoverflow.com/questions/3992659
复制相似问题