【问题标题】:How to take value for Object result in ruby on rails如何获取 Object 的值导致 ruby​​ on rails
【发布时间】:2016-09-30 13:10:56
【问题描述】:

我想从对象结果中打印特定值。这是我正在执行 SQL 查询并从视图表中获取所有数据,所有数据都来自“Employee_Information”视图(表)。 hr_controller.rb

class HrController < ApplicationController

  def internal_employee_page        
    @employees = MysqlConnection.connection.select_all("SELECT * FROM Employee_Information")
  end 
end

internal_employee_page.html.erb这是我的第一个观点

<div id="job_details">
    <% @employees.each do |emp| %>
        <%= render partial: "hr/employee_details", locals: {emp: emp} %>
    <% end %>               
</div>

_employee_details.html.erb这是我的第二个观点

<h3> User Name : <%= emp%> </h3>

像这样我正在尝试打印所有值 然后我得到以下结果 我想打印每个值 我也试过这个在我的第二个视图中

<h3> User Name : <%= emp.full_name%> </h3>

但我得到了错误: 请帮助我,我根据我的知识尝试了所有事情,我哪里错了,有什么问题

【问题讨论】:

  • 您是否有理由不使用ActiveRecord 或任何其他ORM 数据库映射器?看起来你想要并且考虑到你的堆栈接线在rails中非常简单。目前,您所有的“对象”实际上都只是Hashes,因此对它们的所有操作都应在此上下文中执行。

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


【解决方案1】:

试试这个:

<h3> User Name : <%= emp["full_name"] %> </h3>

【讨论】:

    【解决方案2】:

    您正在尝试从哈希中读取值,因此emp.full_name 将不起作用,您可以从哈希中读取值,例如 Hash['key']

    所以对于 full_name 做&lt;%= emp['full_name'] %&gt;

    【讨论】:

      【解决方案3】:
      <h3> User Name : <%= emp.full_name%> </h3>
      

      full_name 不是员工实例的属性,这就是您收到此错误的原因。尝试获取该员工实例中存在的特定属性。

      【讨论】:

      • full_name 存在,但员工不是Employee 的实例,而是Hash 的实例
      【解决方案4】:

      现在您的响应对象只是简单的Hash 对象,要访问键的值,您需要使用Hash 方法,例如[]fetch 来检索值。如果您想要更多类似语法的方法,您可以执行以下操作之一:

      • 使用 ActiveRecord 或其他 ORM 映射器
      • 自己创建动态或静态类并将结果映射到它们
      • Monkey Patch Hash 使用 method_missing 之类的东西来伪造这个概念

      【讨论】:

      • 我会添加另一个选项,它使用 OpenStruct 来实现类似的结果。 OpenStruct.new(emp) 将允许他使用点符号检索该属性。
      • @AlexandreAngelim 公平。由于 1.8 和早期 1.9.3 中的内存泄漏,我忽略了 OpenStruct(现在可能已经修复,但它让我觉得很糟糕)。此外,它已被证明在大型数据集上表现不佳。
      猜你喜欢
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多