使用 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
不会改变
我需要根据 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
不会改变