Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails 4:为什么类中包含的助手是继承的,而类的实例方法不是继承的_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby Rails 4:为什么类中包含的助手是继承的,而类的实例方法不是继承的

Ruby Rails 4:为什么类中包含的助手是继承的,而类的实例方法不是继承的,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我在models/item.rb(其中someAmt是item的一个属性)中定义了一个实例方法,如下所示: include ActionView::Helpers::NumberHelper 类项

我在models/item.rb(其中someAmt是item的一个属性)中定义了一个实例方法,如下所示:

include ActionView::Helpers::NumberHelper
类项2)}”
终止
终止
并尝试像这样使用index.html.erb中的方法(因为该方法是实例方法,所以不起作用):


但是,我可以使用模型项中包含的编号\u到\u货币帮助器:

<tr>
  <td class="item_total">
    <%= @items.number_to_currency(BigDecimal(@items.sum(&:someAmt))/100, precision: 2) %>
  </td>
</tr>


这是因为号码LPER已自动包含在内,还是原因

这里有很多错误。首先,在类之外执行
include
方法。这将导致模块包含在
对象
类中,从而使应用程序中几乎每个对象上的所有方法都可用。这就是为什么您可以使用
@items.number\u到\u currency
。您还可以使用
nil.number\u to\u currency
15.5.number\u to\u currency
false.number\u to\u currency
。这是错误的

现在,即使你把它移到类中,它仍然不起作用
@items
ActiveRecord::Relations
(很可能)的实例或项目集合。您的方法是实例方法,只能对单个项调用


也就是说,这个方法甚至不应该是项目的实例方法,因为这打破了MVC模式。此方法的唯一目的是以美元显示给定值,这是典型的视图关注点。它甚至不使用任何模型属性。它应该放在helpers中。

你真的在你的类定义之外有include吗?为什么
@items
(复数)?它是一个单一的
项目
实例还是一个集合?@BroiSatse我在某个地方找到了它。@thaleshcv是的,它是一个集合?
<tr>
  <td class="item_total">
    <%= @items.displayInDollar(BigDecimal(@items.sum(&:someAmt))/100, precision: 2) %>
  </td>
</tr>
<tr>
  <td class="item_total">
    <%= @items.number_to_currency(BigDecimal(@items.sum(&:someAmt))/100, precision: 2) %>
  </td>
</tr>