2016-09-30 6 views
3

オブジェクトの結果から特定の値を出力したい。ここで私はSQLクエリを実行し、Viewテーブルからすべてのデータを取得します。すべてのデータは "Employee_Information"ビュー(テーブル)から取得します。 は、これが、これは私の2番目のビューである私の最初のビューruby​​ on railsでオブジェクトの結果を得る方法

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

_employee_details.html.erb internal_employee_page.html.erb

class HrController < ApplicationController 

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

あるhr_controller.rb

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

このような私はプライムしようとしていますNTのすべての値 が、私は、私はそれぞれの値 を印刷する結果 enter image description here を次しまった私は、私の2番目のビュー

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

もこれを試してみました。しかし、私はエラーだ: enter image description here を助けてくださいI私の知識に従って、すべてのことを試しました。どこが間違っていて、何が問題なのですか?

+0

「ActiveRecord」または他のORMデータベースマッパーを使用していない理由はありますか?これは、あなたが望むように思えますし、あなたのスタック配線を与えても、これは非常に簡単です。現在のところ、すべての "オブジェクト"は実際はちょうどハッシュなので、これらのすべての操作はこのコンテキストで実行する必要があります。 – engineersmnky

答えて

3

これを試してみてください:

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

full_nameは、このエラーが発生した従業員インスタンスの属性ではありません。その従業員インスタンスに存在する特定の属性を取得してみてください。

+0

'full_name'は存在しますが、従業員は' Employee'のインスタンスではなく 'Hash'のインスタンスです – engineersmnky

1

あなたがそうemp.full_nameが動作しません、ハッシュから値を読み取るしようとしている、あなたはFULL_NAMEのためにそうHash['key']

のようにハッシュから値を読み取ることができますが<%= emp['full_name'] %>

0

を行います今のレスポンスオブジェクトは単純なHashオブジェクトで、キーの値にアクセスするには、Hashメソッド([]またはなど)を使用する必要があります。を使用して値を取得します。

  • 使用ActiveRecordのまたは別のORMマッパー
  • モンキーパッチハッシュを自分自身を動的または静的クラスを作成し、それらに結果をマップ:あなたは構文のようなより多くの方法をご希望の場合は、次のいずれかを行うことができますmethod_missingのようなものです。
+0

私はOpenStructを使って同様の結果を得ている別のオプションを追加します。 'OpenStruct.new(emp)'を使うと、ドット表記でその属性を取り出すことができます。 –

+1

@AlexandreAngelimフェア。私はOpenStructを無視しました。これは1.8と初期の1.9.3でメモリリークが発生したためです(これはおそらく修正されましたが、私の口には悪い味がありました)。また、大きなデータセットではパフォーマンスが遅いことが分かっています。 – engineersmnky

関連する問題