我现在已经打破了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 %>
但我真正希望它做的只是将数据拉到genre = Dubstep。现在在PHP中,我会做类似的事情。
$result = mysql_query("SELECT * FROM albums WHERE genre='dubstep'")
我错过了什么?
答案 0 :(得分:1)
如果您使用ActiveRecord,只需在查询中添加where子句:
Album.where(:genre => "dubstep")
其他一些信息:http://guides.rubyonrails.org/active_record_querying.html#conditions
答案 1 :(得分:0)
我认为对您来说重要的是了解MVC(模型 - 视图 - 控制器)架构的工作原理。这是一个链接on how it works。
您提供的代码是您的视图,它知道如何显示相册列表。但是控制器可以完成MVC中的大部分工作,例如为您的视图提供相册列表。目前,如果要将所有相册编入索引,则会在/app/controllers/AlbumsController.rb
:
def index
@albums = Album.all
respond_to [...]
[...]
end
这是您视图中@albums.do each {...}
的来源。我会做的是类似的,但不是.all
而是传递.where(:genre => :params[:genre])
子句,而参数来自你的网址。
答案 2 :(得分:0)
试试这个:
Album.find_all_by_genre("dubstep")