我在我的 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)这是最好的方法吗?
我已经查看了这些和其他 SO 问题,但没有一个是我真正想要的:
编辑 好的,这可行,但看起来它不是正确的解决方案。有没有人有更好的方法来做到这一点?
@status = Lookup.where(:id => @course.status).pluck(:lookup_text)[0]