我收到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
答案 0 :(得分:3)
这告诉你的是,ruby无法找到常量(类)IpsTcpHdr - 它正在查看ApplicationHelper。
您可以通过要求(需要&#39;&#39;)IpsTcpHdr所在的文件来解决此问题。但是您也可以在某些文件夹中找到自动加载文件,但是您的文件必须被调用ips_tcp_hdr.rb位于rails自动加载的地方(例如app / models目录或(取决于rails和你的配置)lib /目录)。
请注意,您的问题最好是&#34;什么是未初始化的常量ApplicationHelper :: SomeClassName告诉我?&#34;