我已經建立了一個查找表,在我的Rails應用程序。無法檢索查找值正確
這是存儲查找文本值下拉採摘或可能複選框的表。我希望查找表具有相關聯的視圖,以便可以輕鬆編輯這些值。我也可能希望將來在單個字段的多個模型中共享查找值。
到目前爲止,我已經成功地得到它的值的選擇工作,但隨後的表演或索引視圖中再次顯示文本值一直是個問題。
這是我建立的查找表
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)這是最好的方法嗎?
我有一個看看這些和其他做題,但都不是真的是我要找:
Rails Polymorphic with Lookup Table
Implementing a lookup table in Rails
編輯 確定該作品,但它看起來並不是正確的解決方案。有沒有人有更好的方式來做到這一點?
@status = Lookup.where(:id => @course.status).pluck(:lookup_text)[0]
感謝您的回答。我明白這是一個有趣的方法! – ardochhigh
如果只聲明belongs_to,如下所示:'class Course; belongs_to:status,class_name:'Lookup';結束「,然後:'Course.first.status.lookup_text'。您還可以在查找表上定義範圍以檢索特定表/字段對的好查找行。 – 907th
請參閱編輯後。你可以走得更遠,並且可以在沒有明確的'.lookup_text'部分(僅僅是'Course.first.status'# - >'Active')的情況下訪問'status'字段,這會讓你的代碼更加乾爽。 – 907th