In my articles model, I created a scope that links categories to their
respective articles posts. When I use the rails console, the method
works perfectly when I query the db.
article.rb
scope :category_technology, -> {where(category_id: 1)}
@articles.category_technology
Article Load (0.5ms) SELECT "articles".* FROM "articles" WHERE
"articles"."category_id" = ? ORDER BY "articles"."created_at" DESC
[["category_id", 1]]
Which works.
Is that not just the same as @category.articles assuming that @category has id 1
_________________________________________________________________________
The problem is that I'm unable to use it in the view and iterate over
the records with category_id: 1.
What I'd like to do is something like this
technology_controller.rb
def index
@technology_articles = Article.category_technology.all.limit(10).last
Again, you would be better to do it the other way around, start with
the category and get the articles from that. Note, however that as
you have coded it you have specifed .last which means that
@technology_articles is only one article, not a collection.
end
_____________________________________________________________________
In the index.html.erb
<% if @technology_articles.present? %>
<% @technology_articles.each do |article| %>
<- omitted ->
<% end %>
I'm getting undefined method `each' for #<Article:0x8300868>
That is because you only have a single Article, not a collection, see above.
Colin