It depends on what you want the method to do.
Inside the Picture class, this should work:
class Picture < ActiveRecord::Base
# ...
def self.get_most_viewed_picture
pic = Picture.find(:first, :conditions => ["active = ?", true], :order
=> 'view_count DESC')
pic.increment! :view_count
pic
end
# ...
end
In the controller:
class UsersController < ApplicationController
def index
@picture = Picture.get_most_viewed_picture
end
end
In the view (/app/views/users/index.html.erb):
<h2>Most viewed picture:</h2>
<%= image_tag @picture.url %>
Should do the trick. If not, please explain a little more.
:-) Lasse
2010/2/14 Craig White <[email protected]>
> I need some overview thinking help.
>
> I have Pictures model/controller but generally, I want to show pictures
> via a partial displayed in other controller views and I want to do
> things like choose the picture based upon various concepts of relevance.
> I also want to update a 'view_count' column in the Pictures model each
> time it is displayed.
>
> So if in a partial in /users controller, I would love to be able to call
> some Picture method (either model or controller but probably controller
> is the more logical choice) but I can't figure a way to do this...
>
> <%= PictureController.some_method %> clearly gives me an error
>
> if I try to put that code into a model...
>
> <%= Picture.some_method %> I am still up a creek without a paddle
>
> this works but clearly doesn't belong in a view...
>
> <% @pic_1 = Picture.find(:first, :conditions => ["active =
> true"], :order => 'view_count'); @pic_1.view_count += 1; @pic_1.save! %>
>
> And of course my problem is that I want to use this 'partial' in a bunch
> of different controllers & actions which is why I don't want to include
> it in each controller/method.
>
> What is the best way to handle something like this?
>
> Craig
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<rubyonrails-talk%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.