在html.erb中我有:
<%= ContactDescribe.where(["contact_describe_id = ?", "12"]).limit(1).pluck(:borrower_or_lender_text) %>
成功检索字段。但是返回一个数组元素。我需要学习如何将该元素转换为字符串。
答案 0 :(得分:1)
除了Deepak的答案,您还可以将Array
转换为&#34; Sentence&#34;串
<%= ContactDescribe.where(contact_describe_id: 12).limit(1).pluck(:borrower_or_lender_text).to_sentence %>
正如TheChamp所指出的,最佳做法是已经准备好了#34;视图中所需的值作为控制器的实例变量。请参阅我推荐的重构
# controller
def YOUR_ACTION_NAME
@contact_describe = ContactDescribe.where(contact_describe_id: 12).first
end
# view
<%= @contact_describe.borrower_or_lender_text %>
注意:除非您有其他原因,否则您甚至不需要采摘limit(1)
答案 1 :(得分:1)
这里的问题是where
返回一个集合 - 类似于数组,只是在ActiveRecord中 - 无论你设置什么限制。要检索信息,您可以使用.first
或[0]
,因为您始终只返回一个对象。
但是,因为您正在寻找特定的ContactDescribe
对象。 请改为:
ContactDescribe.find_by(contact_describe_id: 12).borrower_or_lender
此外,您应该在代码中改进两件事。
1:逻辑应该进入控制器或模型。视图仅用于显示对象。
2:contact_describe_id
字段的内容是什么?为什么不称它为id
。这似乎是多余的。 user.id
比user.user_id
更方便吗?
答案 2 :(得分:-1)
您可以使用join
<%= ContactDescribe.where(contact_describe_id: 12).limit(1).pluck(:borrower_or_lender_text).join(',') %>