2013-04-24 110 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