Rails アプリケーションでルックアップ テーブルを作成しました。
これは、ドロップダウン ピッカーまたは場合によってはチェック ボックスのルックアップ テキスト値を格納するテーブルです。ルックアップ テーブルにビューを関連付けて、値を簡単に編集できるようにします。また、将来的には、1 つのフィールドに対して複数のモデル間でルックアップ値を共有したいと思うかもしれません。
これまでのところ、値の選択で機能させることができましたが、ショーまたはインデックス ビューでテキスト値を再度表示するのは問題がありました。
これは私がルックアップテーブルを構築した方法です
rails g scaffold Lookup field_name lookup_text table_name note
フィールドのルックアップがある edit.html.erb には、このようなコードがあります。これは機能し、リストから選択できるようにします。
<div class="field">
<%= f.label :status %><br />
<%= f.collection_select :status, Lookup.find(:all,:conditions => ["table_name = 'course' and field_name = 'status'"]), :id, :lookup_text, include_blank: true,:prompt => "Status" %>
</div>
それはすべてうまくいきます。表示しようとすると、正しい構文が見つかりません。私が見つけた最高のものはこれです:(コントローラー内)
@status = Lookup.where(:id => @course.status).pluck(:lookup_text)
(ビューで)
<p>
<b>Status:</b>
<%= @status %>
</p>
オブジェクト全体を取得していると思います。次のように表示されます。
ステータス: [「アクティブ」]
私の質問は次のとおりです。(1) 値のみを表示するにはどうすればよいですか? (2)これは最善のアプローチですか?
これらおよびその他のSOの質問を見てきましたが、実際に探しているものはありません:
ルックアップテーブルを使用した Rails ポリモーフィック
編集 OKこれは機能しますが、正しい解決策ではないようです。誰かがこれを行うためのより良い方法を持っていますか?
@status = Lookup.where(:id => @course.status).pluck(:lookup_text)[0]