从rails中的活动记录中获取特定列值

时间:2016-09-27 08:00:58

标签: mysql ruby-on-rails ruby activerecord

我想从活动记录中获取特定的列值,我在视图中编写了sql查询但是我没有得到数据... new.html.erb

 <%= f.text_field :pan_number, { value: OfferLetter.where(["candidate_id = (?)",params[:userID]]).select("pan_number").first, placeholder: 'COYP1234IN', class: 'form-control' } %>

然后我在我的视图中得到了以下结果

OfferLetter.where(["candidate_id = ?",17]).select("pan_number")


OfferLetter Load (0.3ms)  SELECT `offer_letters`.`pan_number` FROM `offer_letters` WHERE (candidate_id = 17)
=> #<ActiveRecord::Relation [#<OfferLetter id: nil, pan_number: "COPYD123IN">]>

和new.html.page enter image description here 这里没有显示Pan Card编号

请帮助我,我是新的ruby on rails并告诉我哪里错了,什么是问题

1 个答案:

答案 0 :(得分:1)

您可以使用此方法,请参阅here

在您的情况下,请尝试以下操作:

OfferLetter.where("candidate_id = ?", params[:userID]).pluck("pan_number").first

并且

当你是ror的新手时,以下是为了帮助你前进:

仅在模型中编写ActiveRecord查询以便更快地执行查询,而不是在视图,控制器等中。

所以在这种情况下,尝试使用像&#39; get_pan_number&#39;在模型中并在视图中使用它。

OfferLetter.rb

def self.get_pan_number(cand_id)
 OfferLetter.where("candidate_id = ?", cand_id).pluck("pan_number").first
end

在视图中使用如下:

new.html.erb

<% pan_no = OfferLetter.get_pan_number(params[:userID]) %>
<%= f.text_field :pan_number, { value: pan_no, placeholder: 'COYP1234IN', class: 'form-control' } %>