On 9 March 2016 at 21:51, David Williams <li...@ruby-forum.com> wrote:
> 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

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLu%3D81TBhXF7O5wi49B6tJCjEdksgm89Abyr_9OuLG6CtA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to