Hello! I have in my database the tags for a specific entry separated by commas and I''m using a SQL statement that pulls all the tags for a bunch of entries and the ruby code on the page: <%- for notes in @tags_sql do -%> <% notes.tag.split(", ").uniq.each do |tags| %> <li><%= link_to(tags, {:tag => tags, :controller => ''project'', :action => ''tags'', :id => @project_id}) %></li> <% end %> It''s able to split after each ", " so I have each tags listed in the unordered list but I also need to have next each individual tag the count of how many times that tag shows up across the sql statement. Is there anyway to do that in my code? I know I can''t do it in my SQL statement because it counts the entire chunk per entry like "a, b, c, d" instead of a b c d - it gets broken up in that code I put above. Basically if its "a, c, a, d" I got it so far to be a c d BUT! I need it to be a (2) c (0) d (0) Any help would be appreciated. You guys are really awesome. --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
How about Note has_many :tags so that rails takes care of it all if you dont like that (which i strongly recommend having implemented your solution and replacing it with the association) you will need to write your own method that counts the instances of an object in an array. it comes by default in ruby 1.9, unfortunatley, rails does not work with it. def array_count arr, obj count = 0 arr.each do |item| count += 1 if item == obj end count end more or less this should work if you put it in your helper so that it doesnt clobber the controller, or even still in the model === note.rb class Note < AR::Base has_many :tags # this would be ideal def note_count tag count = 0 notes.each do |note| count += 1 if note.tags.include?(tag) end count end end hope it helps On Jul 1, 3:53 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hello! > > I have in my database the tags for a specific entry separated by > commas and I''m using a SQL statement that pulls all the tags for a > bunch of entries and the ruby code on the page: > > <%- for notes in @tags_sql do -%> > <% notes.tag.split(", ").uniq.each do |tags| %> > <li><%= link_to(tags, {:tag => tags, :controller => > ''project'', :action => ''tags'', :id => @project_id}) %></li> > <% end %> > > It''s able to split after each ", " so I have each tags listed in the > unordered list but I also need to have next each individual tag the > count of how many times that tag shows up across the sql statement. > > Is there anyway to do that in my code? I know I can''t do it in my SQL > statement because it counts the entire chunk per entry like "a, b, c, > d" instead of a b c d - it gets broken up in that code I put above. > > Basically if its "a, c, a, d" I got it so far to be > > a > c > d > > BUT! I need it to be > > a (2) > c (0) > d (0) > > Any help would be appreciated. You guys are really awesome.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I answer here coz i forgot your code already... === routes.rb map.resources :tags === controllers/tags_controller.rb def index @tags = Tag.find(:all) end === views/tags/index.rhtml <%- for tag in @tags do -%> <%= link_to tag, :controller => ''tags'', :action => ''show'', :id => tag %> ( <%= tag.notes.size %> ) <% end %> This will display what you want tag1 (3) tag2 (0) tag3 (6) where the number is the number of notes associated with that tag. the link stuff ignore if you know where and what to call, but id suppose when you click on one of them it shows you with more depth, what is in the tag === models/tag.rb has_and_belongs_to_many :notes === models/note.rb has_and_belongs_to_many :tags === cmd ruby script/generate migration add_join_table create_table :tags_notes, :id => false do |t| t.integer :tag_id t.integer :note_id end You really need to go through some tutorials, people are not gonna solve these types of issues so in depth all the time.... but hope it helps On Jul 1, 4:06 pm, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> How about Note has_many :tags so that rails takes care of it all > > if you dont like that (which i strongly recommend having implemented > your solution and replacing it with the association) > > you will need to write your own method that counts the instances of an > object in an array. it comes by default in ruby 1.9, unfortunatley, > rails does not work with it. > > def array_count arr, obj > count= 0 > arr.each do |item| > count+= 1 if item == obj > end > count > end > > more or less this should work if you put it in your helper so that it > doesnt clobber the controller, or even still in the model > > === note.rb > > class Note < AR::Base > has_many :tags # this would be ideal > > def note_count tag > count= 0 > notes.each do |note| > count+= 1 if note.tags.include?(tag) > end > count > end > end > > hope it helps > On Jul 1, 3:53 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Hello! > > > I have in my database the tags for a specific entry separated by > > commas and I''m using a SQL statement that pulls all the tags for a > > bunch of entries and the ruby code on the page: > > > <%- for notes in @tags_sql do -%> > > <% notes.tag.split(", ").uniq.each do |tags| %> > > <li><%= link_to(tags, {:tag => tags, :controller => > > ''project'', :action => ''tags'', :id => @project_id}) %></li> > > <% end %> > > > It''s able tosplitafter each ", " so I have each tags listed in the > > unordered list but I also need to have next each individual tag the > >countof how many times that tag shows up across the sql statement. > > > Is there anyway to do that in my code? I know I can''t do it in my SQL > > statement because it counts the entire chunk per entry like "a, b, c, > > d" instead of a b c d - it gets broken up in that code I put above. > > > Basically if its "a, c, a, d" I got it so far to be > > > a > > c > > d > > > BUT! I need it to be > > > a (2) > > c (0) > > d (0) > > > Any help would be appreciated. You guys are really awesome.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I tried: <ul> <%- for notes in @tags_sql do -%> <% count = 0 notes.tag.split(", ").each do |tags| count += 1 if notes.tag.split(", ").include?(tags)%> <li><%= link_to(tags, {:tag => tags, :controller => ''project'', :action => ''tags'', :id => @project_id}) %> <%= count%></li> <% end %> </ul> But it just counts each one like. I know I''m totally doing it work. a 1 b 2 c 3 On Jul 1, 11:54 am, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I answer here coz i forgot your code already... > > === routes.rb > > map.resources :tags > > === controllers/tags_controller.rb > > def index > @tags = Tag.find(:all) > end > > === views/tags/index.rhtml > > <%- for tag in @tags do -%> > <%= link_to tag, :controller => ''tags'', :action => ''show'', :id => > tag %> ( <%= tag.notes.size %> ) > <% end %> > > This will display what you want > tag1 (3) > tag2 (0) > tag3 (6) > > where the number is the number of notes associated with that tag. > > the link stuff ignore if you know where and what to call, but id > suppose when you click on one of them it shows you with more depth, > what is in the tag > > === models/tag.rb > > has_and_belongs_to_many :notes > > === models/note.rb > > has_and_belongs_to_many :tags > > === cmd > > ruby script/generate migration add_join_table > > create_table :tags_notes, :id => false do |t| > t.integer :tag_id > t.integer :note_id > end > > You really need to go through some tutorials, people are not gonna > solve these types of issues so in depth all the time.... > > but hope it helps > > On Jul 1, 4:06 pm, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > How about Note has_many :tags so that rails takes care of it all > > > if you dont like that (which i strongly recommend having implemented > > your solution and replacing it with the association) > > > you will need to write your own method that counts the instances of an > > object in an array. it comes by default in ruby 1.9, unfortunatley, > > rails does not work with it. > > > def array_count arr, obj > > count= 0 > > arr.each do |item| > > count+= 1 if item == obj > > end > > count > > end > > > more or less this should work if you put it in your helper so that it > > doesnt clobber the controller, or even still in the model > > > === note.rb > > > class Note < AR::Base > > has_many :tags # this would be ideal > > > def note_count tag > > count= 0 > > notes.each do |note| > > count+= 1 if note.tags.include?(tag) > > end > > count > > end > > end > > > hope it helps > > On Jul 1, 3:53 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Hello! > > > > I have in my database the tags for a specific entry separated by > > > commas and I''m using a SQL statement that pulls all the tags for a > > > bunch of entries and the ruby code on the page: > > > > <%- for notes in @tags_sql do -%> > > > <% notes.tag.split(", ").uniq.each do |tags| %> > > > <li><%= link_to(tags, {:tag => tags, :controller => > > > ''project'', :action => ''tags'', :id => @project_id}) %></li> > > > <% end %> > > > > It''s able tosplitafter each ", " so I have each tags listed in the > > > unordered list but I also need to have next each individual tag the > > >countof how many times that tag shows up across the sql statement. > > > > Is there anyway to do that in my code? I know I can''t do it in my SQL > > > statement because it counts the entire chunk per entry like "a, b, c, > > > d" instead of a b c d - it gets broken up in that code I put above. > > > > Basically if its "a, c, a, d" I got it so far to be > > > > a > > > c > > > d > > > > BUT! I need it to be > > > > a (2) > > > c (0) > > > d (0) > > > > Any help would be appreciated. You guys are really awesome.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Marra, There are lots of things that tie up a function in a rails project. (function being the tag functionality) the solution i gave is based on your note model having many tags and vice-versa. If you want to follow the "list in one column" approach, the solution id give you is the same one i posted before, because its just neater, and follows the rails conventions. So a couple of suggestions: 1) Read blogs, tutorials and screen casts because these questions will all be answered there 2) Follow rails conventions, this is a tough one to learn because there is nothing that protects you from doing things your way, the flipside is that when you want to use your code into some pre- established rails "way" it generally doesnt work and you have to spend time re diong what you did to fit to the rails conventions. 3) Google before you post. Your question was something that i have though of doing a coupe of times and i wanted others to see why is it not a good idea and how it could be done neatly, in general nobody will answer these good luck j On Jul 1, 4:57 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I tried: > > <ul> > <%- for notes in @tags_sql do -%> > <% count = 0 > notes.tag.split(", ").each do |tags| > count += 1 if notes.tag.split(", ").include?(tags)%> > <li><%= link_to(tags, {:tag => tags, :controller => > ''project'', :action => ''tags'', :id => @project_id}) %> <%= count%></li> > <% end %> > </ul> > > But it just counts each one like. I know I''m totally doing it work. > > a 1 > b 2 > c 3 > > On Jul 1, 11:54 am, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > I answer here coz i forgot your code already... > > > === routes.rb > > > map.resources :tags > > > === controllers/tags_controller.rb > > > def index > > @tags = Tag.find(:all) > > end > > > === views/tags/index.rhtml > > > <%- for tag in @tags do -%> > > <%= link_to tag, :controller => ''tags'', :action => ''show'', :id => > > tag %> ( <%= tag.notes.size %> ) > > <% end %> > > > This will display what you want > > tag1 (3) > > tag2 (0) > > tag3 (6) > > > where the number is the number of notes associated with that tag. > > > the link stuff ignore if you know where and what to call, but id > > suppose when you click on one of them it shows you with more depth, > > what is in the tag > > > === models/tag.rb > > > has_and_belongs_to_many :notes > > > === models/note.rb > > > has_and_belongs_to_many :tags > > > === cmd > > > ruby script/generate migration add_join_table > > > create_table :tags_notes, :id => false do |t| > > t.integer :tag_id > > t.integer :note_id > > end > > > You really need to go through some tutorials, people are not gonna > > solve these types of issues so in depth all the time.... > > > but hope it helps > > > On Jul 1, 4:06 pm, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > How about Note has_many :tags so that rails takes care of it all > > > > if you dont like that (which i strongly recommend having implemented > > > your solution and replacing it with the association) > > > > you will need to write your own method that counts the instances of an > > > object in an array. it comes by default in ruby 1.9, unfortunatley, > > > rails does not work with it. > > > > def array_count arr, obj > > > count= 0 > > > arr.each do |item| > > > count+= 1 if item == obj > > > end > > > count > > > end > > > > more or less this should work if you put it in your helper so that it > > > doesnt clobber the controller, or even still in the model > > > > === note.rb > > > > class Note < AR::Base > > > has_many :tags # this would be ideal > > > > def note_count tag > > > count= 0 > > > notes.each do |note| > > > count+= 1 if note.tags.include?(tag) > > > end > > > count > > > end > > > end > > > > hope it helps > > > On Jul 1, 3:53 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Hello! > > > > > I have in my database the tags for a specific entry separated by > > > > commas and I''m using a SQL statement that pulls all the tags for a > > > > bunch of entries and the ruby code on the page: > > > > > <%- for notes in @tags_sql do -%> > > > > <% notes.tag.split(", ").uniq.each do |tags| %> > > > > <li><%= link_to(tags, {:tag => tags, :controller => > > > > ''project'', :action => ''tags'', :id => @project_id}) %></li> > > > > <% end %> > > > > > It''s able tosplitafter each ", " so I have each tags listed in the > > > > unordered list but I also need to have next each individual tag the > > > >countof how many times that tag shows up across the sql statement. > > > > > Is there anyway to do that in my code? I know I can''t do it in my SQL > > > > statement because it counts the entire chunk per entry like "a, b, c, > > > > d" instead of a b c d - it gets broken up in that code I put above. > > > > > Basically if its "a, c, a, d" I got it so far to be > > > > > a > > > > c > > > > d > > > > > BUT! I need it to be > > > > > a (2) > > > > c (0) > > > > d (0) > > > > > Any help would be appreciated. You guys are really awesome.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
uuu. one more thing. never ever ever put login in your views. if you want to do count = 0 notes.tag.split(", ").each do |tags| count += 1 if notes.tag.split(", ").include?(tags) business, do it in the controller, and pass to the views a variable like @tag_names. (something in the lines of @tags = {:a => 2, :b => 2...}) On Jul 1, 4:57 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I tried: > > <ul> > <%- for notes in @tags_sql do -%> > <% count = 0 > notes.tag.split(", ").each do |tags| > count += 1 if notes.tag.split(", ").include?(tags)%> > <li><%= link_to(tags, {:tag => tags, :controller => > ''project'', :action => ''tags'', :id => @project_id}) %> <%= count%></li> > <% end %> > </ul> > > But it just counts each one like. I know I''m totally doing it work. > > a 1 > b 2 > c 3 > > On Jul 1, 11:54 am, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > I answer here coz i forgot your code already... > > > === routes.rb > > > map.resources :tags > > > === controllers/tags_controller.rb > > > def index > > @tags = Tag.find(:all) > > end > > > === views/tags/index.rhtml > > > <%- for tag in @tags do -%> > > <%= link_to tag, :controller => ''tags'', :action => ''show'', :id => > > tag %> ( <%= tag.notes.size %> ) > > <% end %> > > > This will display what you want > > tag1 (3) > > tag2 (0) > > tag3 (6) > > > where the number is the number of notes associated with that tag. > > > the link stuff ignore if you know where and what to call, but id > > suppose when you click on one of them it shows you with more depth, > > what is in the tag > > > === models/tag.rb > > > has_and_belongs_to_many :notes > > > === models/note.rb > > > has_and_belongs_to_many :tags > > > === cmd > > > ruby script/generate migration add_join_table > > > create_table :tags_notes, :id => false do |t| > > t.integer :tag_id > > t.integer :note_id > > end > > > You really need to go through some tutorials, people are not gonna > > solve these types of issues so in depth all the time.... > > > but hope it helps > > > On Jul 1, 4:06 pm, "\"Wolas!\"" <jcpen...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > How about Note has_many :tags so that rails takes care of it all > > > > if you dont like that (which i strongly recommend having implemented > > > your solution and replacing it with the association) > > > > you will need to write your own method that counts the instances of an > > > object in an array. it comes by default in ruby 1.9, unfortunatley, > > > rails does not work with it. > > > > def array_count arr, obj > > > count= 0 > > > arr.each do |item| > > > count+= 1 if item == obj > > > end > > > count > > > end > > > > more or less this should work if you put it in your helper so that it > > > doesnt clobber the controller, or even still in the model > > > > === note.rb > > > > class Note < AR::Base > > > has_many :tags # this would be ideal > > > > def note_count tag > > > count= 0 > > > notes.each do |note| > > > count+= 1 if note.tags.include?(tag) > > > end > > > count > > > end > > > end > > > > hope it helps > > > On Jul 1, 3:53 pm, Marra <bendingunitn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Hello! > > > > > I have in my database the tags for a specific entry separated by > > > > commas and I''m using a SQL statement that pulls all the tags for a > > > > bunch of entries and the ruby code on the page: > > > > > <%- for notes in @tags_sql do -%> > > > > <% notes.tag.split(", ").uniq.each do |tags| %> > > > > <li><%= link_to(tags, {:tag => tags, :controller => > > > > ''project'', :action => ''tags'', :id => @project_id}) %></li> > > > > <% end %> > > > > > It''s able tosplitafter each ", " so I have each tags listed in the > > > > unordered list but I also need to have next each individual tag the > > > >countof how many times that tag shows up across the sql statement. > > > > > Is there anyway to do that in my code? I know I can''t do it in my SQL > > > > statement because it counts the entire chunk per entry like "a, b, c, > > > > d" instead of a b c d - it gets broken up in that code I put above. > > > > > Basically if its "a, c, a, d" I got it so far to be > > > > > a > > > > c > > > > d > > > > > BUT! I need it to be > > > > > a (2) > > > > c (0) > > > > d (0) > > > > > Any help would be appreciated. You guys are really awesome.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Wolas! I appreciate your help. I was able to find a solution to my problem through my own means, but thank you for trying. I do read a lot of tutorials and blogs, and the ones I found didn''t help with my particular problem because of the way I had been working already. This is my first Ruby on Rails project, naturally you can imagine it won''t be as perfect as it should be, but I am trying my best and the project is moving forward. At any rate I was able to solve my problem on my own - thanks anyway! Marra --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---