使用 Rails 未出现正确的搜索结果 3

The proper search result is not coming using Rails 3

我需要根据 id 访问数据库中的所有值,但我得到以下输出。

Output:

all details are #<PaymentVendor:0x1ee5860>
all details are #<PaymentVendor:0x1f02798>

我在下面解释我的代码。

@rest_ids=[21,22,23]
@rest_ids.each do |ids|
            @pdf_vendor_details = PaymentVendor.where(:id => ids )
            puts "all details are #{@pdf_vendor_details}"
        end

从上面的代码我有一些 ids 数组(i.e- @rest_ids)。这里我的要求是当循环将根据 id 执行时,记录将获取并存储在变量 @pdf_vendor_details 中array.If 我想在 table 中显示一些值然后我将能够像下面那样做。

table.html.erb:

<table>
<tr>
<td>ID</td>
<td>Receipt No</td>
<td>Amount</td>
</tr>
 <% @pdf_vendor_details.each do |details| %>
<tr>
<td><%= details.id %></td>
<td><%= details.Receipt_No %></td>
<td><%= details.Amount %></td>
</tr>
<% end  %>
</table>

但是这样做我无法获得任何值并且无法在 table.Please 中显示数据帮助我访问来自 DB 的数据,这些数据将存储在数组中以显示在 table.

你可以试试

PaymentVendor.where(id: [21, 22, 23])

这将构建一个 SQL 语句,如

SELECT * FROM payment_vendors WHERE id IN (21, 22, 23)

我看不出有任何理由循环@rest_ids 并在每次迭代时查询

@pdf_vendor_details = PaymentVendor.where(:id => ids )

并且在每次迭代中,您将替换 @pdf_vendor_details 的先前值而不是附加到数组。

相反

@pdf_vendor_details = PaymentVendor.where(id: @rest_ids ) #rails 4

@pdf_vendor_details = PaymentVendor.find_all_by_id(@rest_ids) #rails 3

就行了。它将发送一个查询以获取这些 ID 中所有付款供应商的记录。


更新:
如果您想以原始格式打印对象 @pdf_vendor_details 的内容,您可以使用 .inspect.to_yaml。 例如,puts @pdf_vendor_details.inspect,将打印对象的内容。 参考this question,打印对象的内容。

@rest_ids=[21,22,23]
@pdf_vendor_details = PaymentVendor.where(id: @rest_ids )
puts "All details are, #{@pdf_vendor_details.inspect}"

试试这个:

@pdf_vendor_details = PaymentVendor.where(:id => @rest_ids ) #rails 4
#OR
@pdf_vendor_details = PaymentVendor.find_all_by_id(@rest_ids) #rails 3    

@pdf_vendor_details.each do |pdf|
  puts "all details are: ID => #{pdf.id}, Receipt_No => #{pdf.Receipt_No}, Amount=> #{pdf.Amount}"
end

你的table.html.erb不会改变