2013-04-24 3 views
0

У меня есть база данных, и я хочу выбрать данные из нее, нажав кнопку.
Run $ рельсы с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 должен вернуть одну запись. Но в консольном выпуске он возвращает массив, поэтому я предполагаю, что вы вручную создали этот метод в своей книге. Если предполагаемый вывод состоит в том, чтобы перечислить все книги с ценой 50, используйте следующий код в своем представлении.

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

Этот код перебирает каждую книгу в @metod и отображает ссылку, которая идет на show действие его соответствующего контроллера.

+0

hmm, i tot find_by просто возвращает одну запись, тогда как find_all_by возвращает только массив ? – Nich

+0

это правильно. но в вопросе 'find_by_price' возвращает массив (как показано в фрагменте консоли). вот почему у меня есть объяснение в моем ответе. – jvnill

+0

THX, эта работа! Я допустил ошибку и изменил find_by_price («50»), где (: price => «50»), как я могу сделать звонок на кнопку, которая приведет? – Sivard

1

вы можете использовать цикл, чтобы получить все значения из @books

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

делает

@metod = Book.find_by_price("50") 

@metod является переменной экземпляра, чтобы получить доступ к нему, вы можете сделать @ metod.price

+0

то, что вы описали activerecord, создается автоматически, например, у меня есть девять книг в базе данных с разными ценами, я хочу создать кнопку, которая при нажатии отображает только три из девяти записей. – Sivard

+0

erm, возможно, вы можете связать путь и pass param. В индексе вы можете проверить, если param [: something] .blank? что-то еще @metod = Book.find_by_price («50») – Nich

+0

thx, может быть, но я хочу, чтобы результат появился только тогда, когда я нажимаю кнопку, а не постоянно – Sivard