如何在html.erb中显示ROR 5 ActiveRecord pluck as String

时间:2017-05-16 12:42:51

标签: ruby-on-rails activerecord pluck

在html.erb中我有:

<%= ContactDescribe.where(["contact_describe_id = ?", "12"]).limit(1).pluck(:borrower_or_lender_text)  %> 

成功检索字段。但是返回一个数组元素。我需要学习如何将该元素转换为字符串。

3 个答案:

答案 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.iduser.user_id更方便吗?

答案 2 :(得分:-1)

您可以使用join

<%= ContactDescribe.where(contact_describe_id: 12).limit(1).pluck(:borrower_or_lender_text).join(',')  %>