2013-04-24 108 views
0

我有一個數據庫,我想通過按下按鈕從中選擇數據。
運行軌$çRuby on Rails 3如何顯示來自數據庫的信息

1.9.2p290 :001 >Book.find_by_price("50") 
# => #<Book id: 1, price: "50"><Book id: 2, price: "50"><Book id: 3, price: "50"> 

在控制檯中,他找到正確的信息,但如何將其顯示在視圖中?
我試圖在控制器中編寫一個方法。

books_controller.rb 
class BooksController < ApplicationController 
    def index 
    @books = Book.all 
    @metod = Book.find_by_price("50") 
    end 
#... 
end 

,然後在視圖

view/books/index.html.erb 
<%= link_to @metod %> 

但它不工作。請告訴我它是如何完成的?
我希望在點擊視圖中的按鈕時顯示這些數據。

回答

0

如果您使用ActiveRecord的動態查找器,find_by_price應該返回單個記錄。但在控制檯輸出中,它正在返回一個數組,所以我假設您在Book模型中手動創建了該方法。如果預期的輸出是以50的價格列出所有書籍,請在視圖中使用以下代碼。

<% @metod.each do |book| %> 
    <%= link_to book, book %> 
<% end %> 

該代碼在@metod遍歷每本書並顯示進入其相應的控制器的動作show的鏈接。

+0

hmm,我是find_by只是返回一條記錄,而find_all_by只返回數組? – Nich 2013-04-24 12:09:09

+0

這是正確的。但在這個問題中,'find_by_price'返回一個數組(如控制檯代碼片段所示)。這就是爲什麼我在我的答案中有解釋。 – jvnill 2013-04-24 12:28:31

+0

thx,這項工作!我犯了一個錯誤,並改變了find_by_price(「50」)在哪裏(:price =>「50」)我怎麼能打電話給按鈕,結果呢? – Sivard 2013-04-24 16:30:56

1

你可以使用一個循環來得到@books

@books.each do |book| 
    <%= book.name %> 
    <%= book.price %> 
end 

所有值做

@metod = Book.find_by_price("50") 

@metod是一個實例變量,訪問它,你可以做@ metod.price

+0

你所描述的activerecord自動創建,例如,我有一個數據庫中的九本書,價格不同,我想做一個按鈕,當按下時只顯示九個條目中的三個 – Sivard 2013-04-24 15:48:00

+0

erm,也許你可以link_to一個路徑並傳遞參數,在索引中,你可以檢查,如果param [:something] .blank?別的東西@metod = Book.find_by_price(「50」) – Nich 2013-04-24 15:58:25

+0

thx,也許,但我希望結果只在單擊按鈕時出現,而不是永久 – Sivard 2013-04-24 16:47:07

相關問題