【问题标题】:Why is my view displaying an active-record object?为什么我的视图显示活动记录对象?
【发布时间】:2014-07-27 02:58:36
【问题描述】:

我想显示来自活动记录哈希的值,但我只看到对象本身。

当我尝试在我的视图中显示该值时会显示:

#<ACTIVERECORD::RELATION:0X007F2600849018>

如果我在哈希值的视图代码中添加.all,则会显示此信息。

[#<IPSREFERENCE_SYSTEM REF_SYSTEM_NAME: "BUGTRAQ">]

来自控制器的代码。我已将数据添加到 @sig_info@sig_ref_info 数组中以供我查看:

  def get_sig_id(sig_sid)
    IpsSignature.where('sig_sid =?', sig_sid).first.sig_id
  end

  def get_sig_sid(sig_id)
    IpsSignature.where('sig_id =?', sig_id).first.sig_sid
  end

  def get_sig_gid(sig_id)
    IpsSignature.where('sig_id =?', sig_id).first.sig_gid
  end

  def get_sig_class_id(sig_id)
    IpsSignature.where('sig_id =?', sig_id).first.sig_class_id
  end

  def get_sig_class_name(sig_class_id)
    IpsSigClass.where('sig_class_id =?', sig_class_id).first.sig_class_name
  end

  def get_sig_name(sig_id)
    IpsSignature.where('sig_id =?', sig_id).first.sig_name
  end

  def get_ref_id(sig_id)
    IpsSig_reference.select('ref_id').where('sig_id =?', sig_id)
  end

  def get_ref_system_id(ref_id)
    IpsReference.select('ref_system_id').where('ref_id =?', ref_id)
  end

  def get_ref_system_name(ref_system_id)
    IpsReference_System.select('ref_system_name').where('ref_system_id =?', ref_system_id)
  end

  def get_ref_tag(ref_id)
    IpsReference.select('ref_tag').where('ref_id =?', ref_id)
  end

  def ips_signatures

    @sig_info = Array.new
    @sig_ref_info = Array.new

    if params[:query].present?

      signature_id = params[:query]
      sig_id = get_sig_id(signature_id)
      sig_sid = get_sig_sid(sig_id)
      sig_gid = get_sig_gid(sig_id)
      sig_class_id = get_sig_class_id(sig_id)
      sig_class_name = get_sig_class_name(sig_class_id)
      sig_name = get_sig_name(sig_id)
      sig_ref_id = get_ref_id(sig_id)
      sig_ref_id.each do |id|
        sig_ref_tag = get_ref_tag(id.ref_id)
        sig_ref_system_id = get_ref_system_id(id.ref_id)
        sig_ref_system_id.each do |sys_id|
          sig_ref_system_name = get_ref_system_name(sys_id.ref_system_id)
          @sig_ref_info += [sig_ref_system_name: sig_ref_system_name, sig_ref_tag: sig_ref_tag]
        end
      end
      @sig_info = [sig_sid:sig_sid,sig_gid: sig_gid, sig_class_name: sig_class_name, sig_name: sig_name]
    end
  end

我正在循环抛出 @sig_ref_info@sig_info 数组(查看代码):

  <% @sig_info.each do |sig_info| %>

    <div style="color:#58585a; font-size: 24px;padding-top:50px;padding-bottom:10px;font-weight:bold">
        Signature ID:
    </div>

    <div style="color:#58585a; font-size: 20px;padding-bottom:30px;font-weight:bold;">
        <%= sig_info[:sig_sid] %>
    </div>

    <table style="border-style:none">
        <div style="color:#2a2874; font-size: 24px;padding-bottom:20px;border-style:none">
          generator id:
        </div>
    </table>

    <table style="border-style:none">
        <div style="color:#2a2874; font-size: 20px;padding-bottom:20px;border-style:none">
          <%= sig_info[:sig_gid] %>
        </div>
    </table>

      <table style="border-style:none">
        <div style="color:#2a2874; font-size: 24px;padding-bottom:20px;border-style:none">
          class:
        </div>
      </table>

      <table style="border-style:none">
        <div style="color:#2a2874; font-size: 20px;padding-bottom:20px;border-style:none">
          <%= link_to sig_info[:sig_class_name], '/ips_alert_classes?query='+ sig_info[:sig_class_name].to_s %>
        </div>
      </table>

      <table style="border-style:none">
        <div style="color:#2a2874; font-size: 24px;padding-bottom:20px;border-style:none">
          signature name:
        </div>
      </table>

      <table style="border-style:none">
        <div style="color:#2a2874; font-size: 20px;padding-bottom:20px;border-style:none">
          <%= sig_info[:sig_name] %>
        </div>
      </table>

<% end %>

        <table style="border-style:none">
            <div style="color:#2a2874; font-size: 24px;padding-bottom:20px;border-style:none">
                references:
            </div>
        </table>

  <% @sig_ref_info.each do |ref_info| %>

        <table style="border-style:none">
            <div style="color:#2a2874; font-size: 20px;padding-bottom:20px;border-style:none">
                <%= ref_info[:sig_ref_system_name] %> | <%= ref_info[:sig_ref_tag] %>
            </div>
        </table>

  <% end %>

ref_info 循环是我遇到问题的地方,其余的显示都很好。我要从中提取的活动记录关系对象中的键是 REF_SYSTEM_NAME: 键,如何在我的视图中的 do 块中将其拉出?

【问题讨论】:

  • 什么是get_ref_system_name,它返回什么?
  • 请发布您的总控制器和视图代码,以便弄清楚
  • 更新了更多代码

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

我重建了活动记录关系(在黑客的帮助下)及其现在的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多