简体   繁体   中英

simple ruby method helper

I am just learning ruby and wanting to practice writing little helper methods for rails as a good way of revising the basics. all I would like to do is provide a counter for scoped objects.

so in my view i write this

=stats_counter_for(with_pending_state)

'pending_state' being a particular scope of the model.

def stats_counter_for(object_state)
    Photo.object_state.count
end

so i want to pass this through to provide a count of all items with a pending state.

so eventually I can do

=stats_counter_for(with_active_state)
=stats_counter_for(with_inactive_state)

(the equals is from the haml view)

update error message

undefined local variable or method `with_pending_state' for #<#<Class:0x007fbce1118230>:0x007fbce1123770>
=link_to '/ Pending Approval', pending_admin_entries_path
=stats_counter_for(with_pending_state)
=link_to '/ Rejected', rejected_admin_entries_path

Where am I going wrong here? I am sure this is incredibly simple.

You can use the send method:

def stats_counter_for(state)
  Photo.send("with_#{state}_state").count
end

So in your views you can use it like that:

= stats_counter_for(:active) # or as a string 'active'
= stats_counter_for(:inactive)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM