我在app/helpers/logs_helper.rb
中创建了一个方法:
def product_name(id)
Product.find_by_id(id).name
end
我想在product_name
中使用此app/helpers/logs_helper/products_log_helper.rb
:
module LogsHelper
module ProductsLogHelper
def search(params)
product_log_name = product_name(params[:id])
end
end
end
但即使我使用它也找不到product_name
:
include LogsHelper
在products_log_helper.rb
文件中。
怎么做?我正在使用Rails 3.2
答案 0 :(得分:2)
视图(以及扩展控制器)可以看到辅助方法;他们并不是真正放置"通用功能"的地方,而是为您的观点提供功能。
您可能想要做的事情可能是app/classes/log.rb
:
class Log
def self.product_name id
Product.find_by_id(id).name
end
end
之后,您可以在Rails应用程序中随处使用:
Log.product_name 42
你可以也获得一个控制器实例,但这很麻烦:
helpers = ApplicationController.new.view_context
helpers.product_name 42
我不确定你在这里尝试做什么,但这种方法也适用于你的模型::
class Product < ActiveRecord::Base
# ...
def self.get_name_by_id id
self.find_by_id(id).name
end
end
之后你可以使用:
Product.get_name_by_id 42