Извлеченные данные из таблиц - PullRequest
0 голосов
/ 07 сентября 2011

Я ломаю голову уже 3 часа и не могу понять, недавно я начал работать с Rails, и я влюблен в это, но есть некоторые мелочи, о которых я не знаю.Как будто у меня есть представление, которое извлекает все данные из таблицы.

<% @albums.each do |album| %>
<div class="album">
<%= album.artist %> - <%= album.album %>
</div>

<div class="albumTask">
  <%= link_to 'Show', album %>
  <% if can? :update, @album %>
    <%= link_to 'Edit', edit_album_path(album) %>
  <% end %>
  <% if can? :destroy, @albumy %>
    <%= link_to 'Destroy', album, confirm: 'Are you sure?', method: :delete %>
  <% end %>
</div>
<% end %>

Но я действительно хочу, чтобы это было только для извлечения данных, где жанр = Dubstep.Теперь в PHP я бы сделал что-то вроде.

$result = mysql_query("SELECT * FROM albums WHERE genre='dubstep'")

Что мне не хватает?

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

Если вы используете ActiveRecord, просто добавьте предложение where к запросу:

Album.where(:genre => "dubstep")

Некоторая дополнительная информация: http://guides.rubyonrails.org/active_record_querying.html#conditions

0 голосов
/ 07 сентября 2011

Попробуйте это:

Album.find_all_by_genre("dubstep")
0 голосов
/ 07 сентября 2011

Я думаю, что для вас важно понять, как работает архитектура MVC (модель-представление-контроллер). Вот ссылка о том, как это работает .

Код, который вы указали, является вашим представлением, и он знает, как отобразить список альбомов. Но именно контроллер выполняет большую часть работы в MVC, например, предоставляет список альбомов на ваш взгляд. Сейчас, если он хочет проиндексировать все альбомы, он вызывает эту часть в вашем /app/controllers/AlbumsController.rb:

def index
  @albums = Album.all

  respond_to [...]
  [...]
end

Отсюда и @albums.do each {...}, по вашему мнению. Я хотел бы сделать то же самое, но вместо .all передайте вместо него выражение .where(:genre => :params[:genre]), где параметр берется из вашего URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...