什么是未初始化的常量ApplicationHelper告诉我?

时间:2014-06-15 11:10:56

标签: ruby-on-rails

我收到uninitialized constant ApplicationHelper错误,但我不确定它告诉我的是什么。

错误;

uninitialized constant ApplicationHelper::IpsTcpHdr
Extracted source (around line #120):

117:                                             'icmp'
118:                                         end %></td>
119:         <td class='src_ip'><%= get_attacker_ip(event.sid, event.cid).to_s(16).rjust(8,'0').scan(/.{2}/).map(&:hex).join('.') %></td>
120:         <td class='src_port'><%= get_tcp_sport(event.sid, event.cid) %></td>
121:         <td class='tgt_ip'><%= get_target_ip(event.sid, event.cid).to_s(16).rjust(8,'0').scan(/.{2}/).map(&:hex).join('.') %></td>
122:         <td class='tgt_port'><%= 'tgt_port' %></td>
123:       </tr>

这是ApplicationHelper;

  def get_tcp_sport(sid,cid)
    IpsTcpHdr.where('sid =? and cid =?', sid, cid).first.tcp_sport
  end

这是我的IpsTcpHdr;

class IpsTcpHdr < ActiveRecord::Base
  attr_accessible :sid, :cid, :tcp_sport, :tcp_dport, :tcp_seq, :tcp_ack, :tcp_off, :tcp_res, :tcp_flags, :tcp_win,
                  :tcp_csum, :tcp_urp
  self.primary_keys = :sid, :cid
  self.table_name = 'tcphdr'
  belongs_to :ips_ip_hdr
end

以下是我在观看中所说的内容;

<td class='src_port'><%= get_tcp_sport(event.sid, event.cid) %></td>

以下是数据库中的信息;

csdashboard=# SELECT * from tcphdr;
 sid | cid  | tcp_sport | tcp_dport |  tcp_seq   |  tcp_ack   | tcp_off | tcp_res | tcp_flags | tcp_win | tcp_csum | tcp_urp 
-----+------+-----------+-----------+------------+------------+---------+---------+-----------+---------+----------+---------
   1 |    1 |     61667 |        80 |  239316451 | 3044404141 |       8 |       0 |        24 |    8208 |    63248 |       0
   1 |    2 |     61670 |        80 | 3279522000 | 4110870482 |       8 |       0 |        24 |    8208 |    34845 |       0

1 个答案:

答案 0 :(得分:3)

这告诉你的是,ruby无法找到常量(类)IpsTcpHdr - 它正在查看ApplicationHelper。

您可以通过要求(需要&#39;&#39;)IpsTcpHdr所在的文件来解决此问题。但是您也可以在某些文件夹中找到自动加载文件,但是您的文件必须被调用ips_tcp_hdr.rb位于rails自动加载的地方(例如app / models目录或(取决于rails和你的配置)lib /目录)。

请注意,您的问题最好是&#34;什么是未初始化的常量ApplicationHelper :: SomeClassName告诉我?&#34;

相关问题