My model has two fields that I want in a customer list for an index page. They are name and second_name. I need a way to combine them in a collection with their id numbers so the Edit links will work. Sounds like SQL, but I''m not sure. maybe something like: SELECT name, id FROM households and SELECT second_name, id FROM households just not sure how to make ONE statement from these two including both... Thanks Bob -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Bob Smith wrote:> My model has two fields that I want in a customer list for an index > page. They are name and second_name. I need a way to combine them in a > collection with their id numbers so the Edit links will work. Sounds > like SQL, but I''m not sure. > > maybe something like: > SELECT name, id FROM households and SELECT second_name, id FROM > households > > just not sure how to make ONE statement from these two including > both... > > Thanks > > BobI''m not clear what you exactly want.. If you want to display name, second name in ur page, use this in controller, Assuming ur model name is Household @households = Household.all & in the view, @households.each do |hh| hh.name + hh.second_name end this is wht u want? regards, Srikanth http://srikanthjeeva.blogspot.com -- Posted via http://www.ruby-forum.com/. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 20 August 2010 06:41, Bob Smith <bsm2th-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> My model has two fields that I want in a customer list for an index > page. They are name and second_name. I need a way to combine them in a > collection with their id numbers so the Edit links will work. Sounds > like SQL, but I''m not sure.I don''t understand what you mean by ''their id numbers''. The household record will have an id but the individual fields do not, they just have the text of the name and second_name. Perhaps you are talking about relationships to other models rather than fields in the model? If so then we need to know the relationships. Colin> > maybe something like: > SELECT name, id FROM households and SELECT second_name, id FROM > households > > just not sure how to make ONE statement from these two including > both... > > Thanks > > Bob > > -- > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
All I need is a list of names and their id field so I can setup links to edit them from the view. The problem is that there are two name lists. I need to combine them and have either rails or SQL order them alphabetically. On Aug 20, 4:51 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 20 August 2010 06:41, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > My model has twofieldsthat I want in a customerlistfor an index > > page. They are name and second_name. I need a way to combine them in a > > collection with their id numbers so the Edit links will work. Sounds > > like SQL, but I''m not sure. > > I don''t understand what you mean by ''their id numbers''. The household > record will have an id but the individualfieldsdo not, they just > have the text of the name and second_name. Perhaps you are talking > about relationships to other models rather thanfieldsin the model? > If so then we need to know the relationships. > > Colin > > > > > maybe something like: > > SELECT name, id FROM households and SELECT second_name, id FROM > > households > > > just not sure how to make ONE statement from these two including > > both... > > > Thanks > > > Bob > > > -- > > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On 21 August 2010 08:40, Bob Smith <bsm2th-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> All I need is a list of names and their id field so I can setup links > to edit them from the view. The problem is that there are two name > lists. I need to combine them and have either rails or SQL order them > alphabetically.Please don''t top post, it makes it difficult to follow the thread. What do you mean a list of names and their id fields? You said that the names are fields in your model, so they do not have id''s of their own. I asked that question last time and you have not answered it. Colin> > On Aug 20, 4:51 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: >> On 20 August 2010 06:41, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >> > My model has twofieldsthat I want in a customerlistfor an index >> > page. They are name and second_name. I need a way to combine them in a >> > collection with their id numbers so the Edit links will work. Sounds >> > like SQL, but I''m not sure. >> >> I don''t understand what you mean by ''their id numbers''. The household >> record will have an id but the individualfieldsdo not, they just >> have the text of the name and second_name. Perhaps you are talking >> about relationships to other models rather thanfieldsin the model? >> If so then we need to know the relationships. >> >> Colin >> >> >> >> > maybe something like: >> > SELECT name, id FROM households and SELECT second_name, id FROM >> > households >> >> > just not sure how to make ONE statement from these two including >> > both... >> >> > Thanks >> >> > Bob >> >> > -- >> > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
What I need returned is a list of the names in the fields name and sname put together in alphabetical order with their ids so I can make this list into an index screen with edit links. I assume the id would be Household.id, just looking for a way to combine two name fields for the index page. Bob On Aug 21, 8:19 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 21 August 2010 08:40, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > All I need is a list of names and their id field so I can setup links > > to edit them from the view. The problem is that there are two name > > lists. I need to combine them and have either rails or SQL order them > > alphabetically. > > Please don''t top post, it makes it difficult to follow the thread. > What do you mean a list of names and their id fields? You said that > the names are fields in your model, so they do not have id''s of their > own. I asked that question last time and you have not answered it. > > Colin > > > > > On Aug 20, 4:51 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> On 20 August 2010 06:41, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > >> > My model has twofieldsthat I want in a customerlistfor an index > >> > page. They are name and second_name. I need a way to combine them in a > >> > collection with their id numbers so the Edit links will work. Sounds > >> > like SQL, but I''m not sure. > > >> I don''t understand what you mean by ''their id numbers''. The household > >> record will have an id but the individualfieldsdo not, they just > >> have the text of the name and second_name. Perhaps you are talking > >> about relationships to other models rather thanfieldsin the model? > >> If so then we need to know the relationships. > > >> Colin > > >> > maybe something like: > >> > SELECT name, id FROM households and SELECT second_name, id FROM > >> > households > > >> > just not sure how to make ONE statement from these two including > >> > both... > > >> > Thanks > > >> > Bob > > >> > -- > >> > 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@googlegroups.com. > >> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > >> > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On 22 August 2010 23:04, Bob Smith <bsm2th-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: Once again, please do not top post. Insert your reply a appropriate points in the previous message. Thanks> What I need returned is a list of the names in the fields name and > sname put together in alphabetical order with their ids > so I can make this list into an index screen with edit links. I assume > the id would be Household.id, just looking for a way to combine > two name fields for the index page.I think I am slowly managing to get some grasp of what you are trying to achieve, though it is proving very difficult to get information from you. Is it right that you want a view showing a list of households where for each household you show the name which is a concatenation of two fields from the household object? If so then you can do something like <% @households.each do |household| %> <%= "#{household.name1} #{household.name2}" %> <% end %> However it would be better to provide a method oh Household that returns the combined name so you can use <%= household.combined_name %> Colin> > > Bob > > On Aug 21, 8:19 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: >> On 21 August 2010 08:40, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >> > All I need is a list of names and their id field so I can setup links >> > to edit them from the view. The problem is that there are two name >> > lists. I need to combine them and have either rails or SQL order them >> > alphabetically. >> >> Please don''t top post, it makes it difficult to follow the thread. >> What do you mean a list of names and their id fields? You said that >> the names are fields in your model, so they do not have id''s of their >> own. I asked that question last time and you have not answered it. >> >> Colin >> >> >> >> > On Aug 20, 4:51 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: >> >> On 20 August 2010 06:41, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >> >> > My model has twofieldsthat I want in a customerlistfor an index >> >> > page. They are name and second_name. I need a way to combine them in a >> >> > collection with their id numbers so the Edit links will work. Sounds >> >> > like SQL, but I''m not sure. >> >> >> I don''t understand what you mean by ''their id numbers''. The household >> >> record will have an id but the individualfieldsdo not, they just >> >> have the text of the name and second_name. Perhaps you are talking >> >> about relationships to other models rather thanfieldsin the model? >> >> If so then we need to know the relationships. >> >> >> Colin >> >> >> > maybe something like: >> >> > SELECT name, id FROM households and SELECT second_name, id FROM >> >> > households >> >> >> > just not sure how to make ONE statement from these two including >> >> > both... >> >> >> > Thanks >> >> >> > Bob >> >> >> > -- >> >> > 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@googlegroups.com. >> >> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> >> > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org. >> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 23, 3:24 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 22 August 2010 23:04, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > Once again, please do not top post. Insert your reply a appropriate > points in the previous message. Thanks > > > What I need returned is a list of the names in the fields name and > > sname put together in alphabetical order with their ids > > so I can make this list into an index screen with edit links. I assume > > the id would be Household.id, just looking for a way to combine > > two name fields for the index page. > > I think I am slowly managing to get some grasp of what you are trying > to achieve, though it is proving very difficult to get information > from you. > > Is it right that you want a view showing a list of households where > for each household you show the name which is a concatenation of two > fields from the household object? If so then you can do something > like > > <% @households.each do |household| %> > <%= "#{household.name1} #{household.name2}" %> > <% end %> > > However it would be better to provide a method oh Household that > returns the combined name so you can use > <%= household.combined_name %> > > Colin > > > > > Bob > > > On Aug 21, 8:19 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> On 21 August 2010 08:40, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > >> > All I need is a list of names and their id field so I can setup links > >> > to edit them from the view. The problem is that there are two name > >> > lists. I need to combine them and have either rails or SQL order them > >> > alphabetically. > > >> Please don''t top post, it makes it difficult to follow the thread. > >> What do you mean a list of names and their id fields? You said that > >> the names are fields in your model, so they do not have id''s of their > >> own. I asked that question last time and you have not answered it. > > >> Colin > > >> > On Aug 20, 4:51 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> >> On 20 August 2010 06:41, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > >> >> > My model has twofieldsthat I want in a customerlistfor an index > >> >> > page. They are name and second_name. I need a way to combine them in a > >> >> > collection with their id numbers so the Edit links will work. Sounds > >> >> > like SQL, but I''m not sure. > > >> >> I don''t understand what you mean by ''their id numbers''. The household > >> >> record will have an id but the individualfieldsdo not, they just > >> >> have the text of the name and second_name. Perhaps you are talking > >> >> about relationships to other models rather thanfieldsin the model? > >> >> If so then we need to know the relationships. > > >> >> Colin > > >> >> > maybe something like: > >> >> > SELECT name, id FROM households and SELECT second_name, id FROM > >> >> > households > > >> >> > just not sure how to make ONE statement from these two including > >> >> > both... > > >> >> > Thanks > > >> >> > Bob > > >> >> > -- > >> >> > 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@googlegroups.com. > >> >> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > >> >> > For more options, visit this group athttp://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 rubyonrails-talk@googlegroups.com. > >> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > >> > For more options, visit this group athttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en.I have 2 name fields called name and sname. What I am trying to do is show both names in the index page at the beginning of the app. They need to be combined as a list which is then put in alphabetical order and given to the index page to be displayed with edit links for each item. Bob -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On 23 August 2010 20:20, Bob Smith <bsm2th-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: When I suggested not top posting, I suggested inserting your post in the previous post in order that it appears after the question it is answering. Not just sticking the reply down the bottom.> I have 2 name fields called name and sname. What I am trying to do is > show both names in the index page at the beginning of > the app. They need to be combined as a list which is then put in > alphabetical order and given to the index page to be displayed with > edit links for each item.So which part is giving the problem? Fetching the records from the database in the right order (in the controller), making the records available to the view, showing the names on the view or showing the edit links? [This would be a good place to insert your reply] Colin -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Aug 23, 4:06 pm, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 23 August 2010 20:20, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > When I suggested not top posting, I suggested inserting your post in > the previous post in order that it appears after the question it is > answering. Not just sticking the reply down the bottom. > > > I have 2 name fields called name and sname. What I am trying to do is > > show both names in the index page at the beginning of > > the app. They need to be combined as a list which is then put in > > alphabetical order and given to the index page to be displayed with > > edit links for each item. > > So which part is giving the problem? Fetching the records from the > database in the right order (in the controller), making the records > available to the view, showing the names on the view or showing the > edit links? > > [This would be a good place to insert your reply] > > ColinBob, what Colin (and others) are trying to understand is what you''re actually trying to do. When you say that you have 2 name fileds (name and sname) do you mean that you have a first name and a surname, each in a Household record (i.e., corresponding, for example, to the head of the household), or do you mean that you have another model (i.e., Person) in which you have fields for name, sname, and household_id (thereby relating the Person record to the Household to which the person belongs, with associated relationships in the models)? As you indicated that you want to display the id of the "name or sname" the inference which I draw is that they will be different, thereby implying that your two name fields are in a model different from the Household model (as they would otherwise both have the same id, corresponding to the id of the Household record). If both name and sname are fields in the same (Person) record (and related to a particular Household record), then concatination can be done in your view, model, or a helper, with the better practice being in the model or helper. Note that you probably do not want hh.name + hh.sname (as suggested above) as that would look strange. You probably would want either hh.sname + '', '' + hh.name or hh.name + '' '' + hh.sname instead. Until you ask a clearly defined question, it is impossible to guess what you want or to provide you with the appropriate guidance. Sandy -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
Bob Smith wrote:> > I have 2 name fields called name and sname. What I am trying to do is > show both names in the index page at the beginning of > the app. They need to be combined as a list which is then put in > alphabetical order and given to the index page to be displayed with > edit links for each item. > > Bobcontroller: def index # get ordered households @households = Household.find(:all, :order => ''sname, name'') end index view: <table> <% @households.each do |hh| %> <tr> <td><%= link_to ''Edit Me!'', edit_household_path(hh) %></td> <td><%= link_to ''Old school link'', :controller => ''households'', :action => ''edit'', :id => hh.id %></td> <td><%= h(hh.sname)+'', ''+h(hh.name) %></td> </tr> <% end %> </table> or if you simply want a list of links: <table> <% @households.each do |hh| %> <tr> <td><%= link_to h(hh.sname)+'', ''+h(hh.name), edit_household_path(hh) %></td> </tr> <% end %> </table> or something like that... -- Posted via http://www.ruby-forum.com/. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Aug 24, 4:14 pm, Ar Chron <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Bob Smith wrote: > > > I have 2 name fields called name and sname. What I am trying to do is > > show both names in the index page at the beginning of > > the app. They need to be combined as a list which is then put in > > alphabetical order and given to the index page to be displayed with > > edit links for each item. > > > Bob > > controller: > > def index > # get ordered households > @households = Household.find(:all, :order => ''sname, name'') > end > > index view: > <table> > <% @households.each do |hh| %> > <tr> > <td><%= link_to ''Edit Me!'', edit_household_path(hh) %></td> > <td><%= link_to ''Old school link'', :controller => ''households'', > :action => ''edit'', :id => hh.id %></td> > <td><%= h(hh.sname)+'', ''+h(hh.name) %></td> > </tr> > <% end %> > </table> > > or if you simply want a list of links: > > <table> > <% @households.each do |hh| %> > <tr> > <td><%= link_to h(hh.sname)+'', ''+h(hh.name), > edit_household_path(hh) %></td> > </tr> > <% end %> > </table> > > or something like that... > -- > Posted viahttp://www.ruby-forum.com/.The problem I''m having is in combining these two name lists into one list, then putting it in alphabetical order. Name is for head of household, and sname is for a second person, either a wife or husband. These are two fields in the same record. Combining the lists and putting them in alphabetical order will show a full list to match whoever comes for the food. This program is for a local foodbank. Thanks Bob -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 25, 7:53 am, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > The problem I''m having is in combining these two name lists into one > list, then putting it in alphabetical order. > Name is for head of household, and sname is for a second person, > either a wife or husband. These are two fields in the same record. > Combining the lists and putting them in alphabetical order will show a > full list to match whoever comes for the food. This program is for a > local foodbank. >Sounds like Ar Chron''s code would do it. Did you try his suggestion ? Fred -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On 25 August 2010 08:02, Frederick Cheung <frederick.cheung-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > On Aug 25, 7:53 am, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > >> >> The problem I''m having is in combining these two name lists into one >> list, then putting it in alphabetical order. >> Name is for head of household, and sname is for a second person, >> either a wife or husband. These are two fields in the same record. >> Combining the lists and putting them in alphabetical order will show a >> full list to match whoever comes for the food. This program is for a >> local foodbank. >> > > Sounds like Ar Chron''s code would do it. Did you try his suggestion ?I think I have just realised what the OP is after, he wants each record to appear twice in the list, once showing name and once showing sname with the two record sets interleaved so that the displayed names are in alpha order. OP is that correct? Colin -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 25, 4:00 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 25 August 2010 08:02, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > On Aug 25, 7:53 am, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > >> The problem I''m having is in combining these two name lists into one > >> list, then putting it in alphabetical order. > >> Name is for head of household, and sname is for a second person, > >> either a wife or husband. These are two fields in the same record. > >> Combining the lists and putting them in alphabetical order will show a > >> full list to match whoever comes for the food. This program is for a > >> local foodbank. > > > Sounds like Ar Chron''s code would do it. Did you try his suggestion ? > > I think I have just realised what the OP is after, he wants each > record to appear twice in the list, once showing name and once showing > sname with the two record sets interleaved so that the displayed names > are in alpha order. > OP is that correct? > > ColinOk, Bob, The problem now seems to be that there is a Household model which contains two fields, name and sname, each of which is the full name (hopefully in the format of last_name, first_name) of a Person in the Household (although it now appears that the question is limited in scope to using a "flat file" which always includes two People per Household). While I would suggest using a second, Person, model, whereby each Household could include one or more "authorized" People, that does not appear to be the question. Assuming that I now understand the Household model, the question appears to be, "How do I create a view which interleaves the names (name and sname) from multiple Household records, alphabetically, with two columns per row ("aname" and "id") from the households table, where "aname" is either "name" or "sname" from the original table." Given the foregoing (and without adding a Person model and relationships), the way I would implement the controller would be to create a new array of hashes of the form {:aname, :id}, then add an element to the array from name/id and sname/id hash for each row in the households table. Then, in the view, I would simply sort the new array by aname, and display the sorted array. Assuming the following Household records: id name sname 1 Doe, John Doe, Joan 2 Smith, Sam Doe, Jill 3 Adams, Art Little, Louise 4 Jones, Tom Doe, Jane The sorted array would display, as follows: Recipients Name Household ID Adams, Art 3 Doe, Jane 4 Doe, Jill 2 Doe, Joan 1 Doe, John 1 Jones, Tom 4 Little, Louise 3 Smith, Sam 2 For simplicity (without dealing with routes.rb), you can provide the following code in the households_controller to show the above in the view (index.html.erb): def index @households = Household.all @sorted = Array.new for n in @households do @sorted << { :aname => n.name, :id => n.id } @sorted << { :aname => n.sname, :id => n.id } end respond_to do |format| format.html # index.html.erb format.xml { render :xml => @households } end end Then, in the view, index.html.erb: <h1>Listing Households</h1> <table> <tr> <th>id</th> <th>Name</th> <th>Sname</th> </tr> <% @households.each do |household| %> <tr> <td><%=h household.id %></td> <td><%=h household.name %></td> <td><%=h household.sname %></td> <td><%= link_to ''Show'', household %></td> <td><%= link_to ''Edit'', edit_household_path(household) %></td> <td><%= link_to ''Destroy'', household, :confirm => ''Are you sure?'', :method => :delete %></td> </tr> <% end %> </table> <br /> <h1>Listing Recipients</h1> <table> <tr> <th>Name</th><th>Household ID</th> </tr> <% @sorted.sort_by { |n| n[:aname] }.each do |n| %> <tr> <td><%= n[:aname] %></td><td><%= n[:id] %> </tr> <% end %> </table> <%= link_to ''New household'', new_household_path %></table> Thereby, providing the following output in the view: Listing Households id Name Sname 1 Doe, John Doe, Joan Show Edit Destroy 2 Smith, Sam Doe, Jill Show Edit Destroy 3 Adams, Art Little, Louise Show Edit Destroy 4 Jones, Tom Doe, Jane Show Edit Destroy Listing Recipients Name Household ID Adams, Art 3 Doe, Jane 4 Doe, Jill 2 Doe, Joan 1 Doe, John 1 Jones, Tom 4 Little, Louise 3 Smith, Sam 2 New household Of course, it would be trivial to create the desired view if the application included a People model, related to the Household model, and doing so would allow for one or more "recipients" per household. On the other hand, the forms used to create households and authorized recipients would be more complex, or maybe you''re dealing with a legacy database having the flat file structure. Now... is this what you wanted? Sandy -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 25, 6:04 am, Sandy <sandy.as...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Aug 25, 4:00 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > > > > > On 25 August 2010 08:02, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > On Aug 25, 7:53 am, Bob Smith <bsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > >> The problem I''m having is in combining these two name lists into one > > >> list, then putting it in alphabetical order. > > >> Name is for head of household, and sname is for a second person, > > >> either a wife or husband. These are two fields in the same record. > > >> Combining the lists and putting them in alphabetical order will show a > > >> full list to match whoever comes for the food. This program is for a > > >> local foodbank. > > > > Sounds like Ar Chron''s code would do it. Did you try his suggestion ? > > > I think I have just realised what the OP is after, he wants each > > record to appear twice in the list, once showing name and once showing > > sname with the two record sets interleaved so that the displayed names > > are in alpha order. > > OP is that correct? > > > Colin > > Ok, Bob, > > The problem now seems to be that there is a Household model which > contains two fields, name and sname, each of which is the full name > (hopefully in the format of last_name, first_name) of a Person in the > Household (although it now appears that the question is limited in > scope to using a "flat file" which always includes two People per > Household). While I would suggest using a second, Person, model, > whereby each Household could include one or more "authorized" People, > that does not appear to be the question. > > Assuming that I now understand the Household model, the question > appears to be, "How do I create a view which interleaves the names > (name and sname) from multiple Household records, alphabetically, with > two columns per row ("aname" and "id") from the households table, > where "aname" is either "name" or "sname" from the original table." > > Given the foregoing (and without adding a Person model and > relationships), the way I would implement the controller would be to > create a new array of hashes of the form {:aname, :id}, then add an > element to the array from name/id and sname/id hash for each row in > the households table. Then, in the view, I would simply sort the new > array by aname, and display the sorted array. > > Assuming the following Household records: > > id name sname > 1 Doe, John Doe, Joan > 2 Smith, Sam Doe, Jill > 3 Adams, Art Little, Louise > 4 Jones, Tom Doe, Jane > > The sorted array would display, as follows: > > Recipients > Name Household ID > Adams, Art 3 > Doe, Jane 4 > Doe, Jill 2 > Doe, Joan 1 > Doe, John 1 > Jones, Tom 4 > Little, Louise 3 > Smith, Sam 2 > > For simplicity (without dealing with routes.rb), you can provide the > following code in the households_controller to show the above in the > view (index.html.erb): > > def index > @households = Household.all > > @sorted = Array.new > for n in @households do > @sorted << { :aname => n.name, :id => n.id } > @sorted << { :aname => n.sname, :id => n.id } > end > > respond_to do |format| > format.html # index.html.erb > format.xml { render :xml => @households } > end > end > > Then, in the view, index.html.erb: > > <h1>Listing Households</h1> > > <table> > <tr> > <th>id</th> > <th>Name</th> > <th>Sname</th> > </tr> > > <% @households.each do |household| %> > <tr> > <td><%=h household.id %></td> > <td><%=h household.name %></td> > <td><%=h household.sname %></td> > <td><%= link_to ''Show'', household %></td> > <td><%= link_to ''Edit'', edit_household_path(household) %></td> > <td><%= link_to ''Destroy'', household, :confirm => ''Are you > sure?'', :method => :delete %></td> > </tr> > <% end %> > </table> > > <br /> > > <h1>Listing Recipients</h1> > > <table> > <tr> > <th>Name</th><th>Household ID</th> > </tr> > <% @sorted.sort_by { |n| n[:aname] }.each do |n| %> > <tr> > <td><%= n[:aname] %></td><td><%= n[:id] %> > </tr> > <% end %> > </table> > <%= link_to ''New household'', new_household_path %></table> > > Thereby, providing the following output in the view: > > Listing Households > id Name Sname > 1 Doe, John Doe, Joan Show Edit Destroy > 2 Smith, Sam Doe, Jill Show Edit Destroy > 3 Adams, Art Little, Louise Show Edit Destroy > 4 Jones, Tom Doe, Jane Show Edit Destroy > > Listing Recipients > Name Household ID > Adams, Art 3 > Doe, Jane 4 > Doe, Jill 2 > Doe, Joan 1 > Doe, John 1 > Jones, Tom 4 > Little, Louise 3 > Smith, Sam 2 > New household > > Of course, it would be trivial to create the desired view if the > application included a People model, related to the Household model, > and doing so would allow for one or more "recipients" per household. > On the other hand, the forms used to create households and authorized > recipients would be more complex, or maybe you''re dealing with a > legacy database having the flat file structure. > > Now... is this what you wanted? > > SandyIn the interest of completely responding to your question about getting the "Edit" links, and to simplify the view code, you may do the sorting in the household_controller. Then, you would simply iterate over the (already) sorted @sorted array. The only other "trick" is that you do have to use the find function in the view, as the restful routing is based on the household object. Finally, in my penultimate paragraph, I meant Person (not People) model. That being said, here is the revised code: Controller: def index @households = Household.all @sorted = Array.new for n in @households do @sorted << { :aname => n.name, :id => n.id } @sorted << { :aname => n.sname, :id => n.id } end @sorted = @sorted.sort_by { |n| n[:aname] } respond_to do |format| format.html # index.html.erb format.xml { render :xml => @households } end end View: <h1>Listing Households</h1> <table> <tr> <th>id</th> <th>Name</th> <th>Sname</th> </tr> <% @households.each do |household| %> <tr> <td><%=h household.id %></td> <td><%=h household.name %></td> <td><%=h household.sname %></td> <td><%= link_to ''Show'', household %></td> <td><%= link_to ''Edit'', edit_household_path(household) %></td> <td><%= link_to ''Destroy'', household, :confirm => ''Are you sure?'', :method => :delete %></td> </tr> <% end %> </table> <br/> <h1>Recipients</h1> <table> <tr> <th>Name</th><th>Household ID</th> </tr> <% @sorted.each do |n| %> <tr> <td><%= n[:aname] %></td> <td><%= n[:id] %> <td><%= link_to ''Show'', Household.find(n[:id]) %></td> <td><%= link_to ''Edit'', edit_household_path(Household.find(n[:id])) %></td> <td><%= link_to ''Destroy'', Household.find(n[:id]), :confirm => ''Are you sure?'', :method => :delete %></td> </tr> <% end %> </table> <br/> <%= link_to ''New household'', new_household_path %> Now, the Show, Edit, and Destroy links are shown with each Recipient in the list of Recipients, but they are routed to the associated Show, Edit, and Destroy functions in the household_controller. Again, I have shown the id from the households table in both the Households Listing and the Recipients listing so that it''s easier to see what''s going on. You will probably need only the Recipients listing portion of index.html.erb, but the way I coded it, you can easily see that it works. As always, I test code before posting it here. Sandy -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
Sandy wrote:> On Aug 25, 4:00�am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: >> >> Combining the lists and putting them in alphabetical order will show a >> >> Colin > > Ok, Bob, > > The problem now seems to be that there is a Household model which > contains two fields, name and sname, each of which is the full nameYes, that would change the landscape a bit. Sounds like Sandy''s solution has the right of it by using @households to build @sorted, thereby replicating the household record for each resident. -- Posted via http://www.ruby-forum.com/. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 25, 10:39 am, Ar Chron <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Sandy wrote: > > On Aug 25, 4:00 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > >> >> Combining the lists and putting them in alphabetical order will show a > > >> Colin > > > Ok, Bob, > > > The problem now seems to be that there is a Household model which > > contains two fields, name and sname, each of which is the full name > > Yes, that would change the landscape a bit. Sounds like Sandy''s > solution has the right of it by using @households to build @sorted, > thereby replicating the household record for each resident. > > -- > Posted viahttp://www.ruby-forum.com/.I think that was the issue that Bob was trying to address, and I''m hoping it was due to his having inherited some legacy flat file database, and possilby not knowing how to normalize it, or being prevented from doing so by something else in the application which uses the households table. Otherwise, the application cries out for relationships between a Person model (a "belongs_to :household" relationship) and the Household model (a "has_many :people"). While this does complicate, slightly, the addition of people to households, it would be a better way to approach the problem, and it would allow for more than two "authorized receivers" per household (although I have no idea of what the business rules are for his application, and they could be... 2 and only 2 per household). Next, @sorted, as defined in the households_controller, does not replicate the household record for each "authorized receiver" (I prefer that term, rather than "resident", because a household could include many residents, only two of whom are authorized to receive food from the food bank). What @sorted does is to provide an array sorted by the names of the "authorized users" with the id of the relevant household record. With that id, one can use Household.find to obtain the relevant household record and then obtain any other field from that record. Of course, if any additional fields were needed in the view, they could be added to the hash in the @sorted array when it was created in the controller, thereby avoiding the need to do the lookups in the view and keeping the data access logic out of the view. While I did use @households in the households_controller, the only reason I did that was so that I could display both households and receivers in the same index.html.erb view, so that it was clear that the @sorted array was providing the "authorized users" in their sorted order with the id of the relevant household record. Otherwise, better practice would be to have households be a local variable within the controller. Sandy -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
On Aug 25, 5:17 pm, Sandy <sandy.as...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Aug 25, 10:39 am, Ar Chron <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > > Sandy wrote: > > > On Aug 25, 4:00 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > > >> >> Combining the lists and putting them in alphabetical order will show a > > > >> Colin > > > > Ok, Bob, > > > > The problem now seems to be that there is a Household model which > > > contains two fields, name and sname, each of which is the full name > > > Yes, that would change the landscape a bit. Sounds like Sandy''s > > solution has the right of it by using @households to build @sorted, > > thereby replicating the household record for each resident. > > > -- > > Posted viahttp://www.ruby-forum.com/. > > I think that was the issue that Bob was trying to address, and I''m > hoping it was due to his having inherited some legacy flat file > database, and possilby not knowing how to normalize it, or being > prevented from doing so by something else in the application which > uses the households table. Otherwise, the application cries out for > relationships between a Person model (a "belongs_to :household" > relationship) and the Household model (a "has_many :people"). While > this does complicate, slightly, the addition of people to households, > it would be a better way to approach the problem, and it would allow > for more than two "authorized receivers" per household (although I > have no idea of what the business rules are for his application, and > they could be... 2 and only 2 per household). > > Next, @sorted, as defined in the households_controller, does not > replicate the household record for each "authorized receiver" (I > prefer that term, rather than "resident", because a household could > include many residents, only two of whom are authorized to receive > food from the food bank). What @sorted does is to provide an array > sorted by the names of the "authorized users" with the id of the > relevant household record. With that id, one can use Household.find > to obtain the relevant household record and then obtain any other > field from that record. Of course, if any additional fields were > needed in the view, they could be added to the hash in the @sorted > array when it was created in the controller, thereby avoiding the need > to do the lookups in the view and keeping the data access logic out of > the view. > > While I did use @households in the households_controller, the only > reason I did that was so that I could display both households and > receivers in the same index.html.erb view, so that it was clear that > the @sorted array was providing the "authorized users" in their sorted > order with the id of the relevant household record. Otherwise, better > practice would be to have households be a local variable within the > controller. > > SandyThanks for the replies, Sandy. That was very close to what I needed.. The problem now is that I am using a text field with observe_field to allow the list to be shrunk, as the beginning of the name is entered. Then the household list is displayed with will_paginate. I can''t seem to fit the conditions to reduce the list and a call to paginate into the code you provided. Below is my controller and view code. By the way, the household class represents a household (novel, eh?). It has HOH and spouse names, street address, mailing, zip, phone, and income info. There is a person model that only holds sex and birthday of each person in the house. This is used for lists for christmas and to report what age people and families used the foodbank. class HouseholdsController < ApplicationController helper ''households'' def admin @date = Time.now end def back $hidden = 0 redirect_to(households_url) end def backup result = `~/foodshelf/script/backup` flash[:notice] = ''Backup completed'' redirect_to(:action => ''index'') # debugger end def christmas # debugger # children under 12 @birthday = Date.today-12.years @f = Household.find(:all, :conditions => ["people.birthday> :bday", {:bday => @birthday}], :joins => [:people])@family12 = @f.uniq.sort_by {|r| r.name_list} @test = Household.count :all, :group => ''people.household_id'', :joins => :people respond_to do |format| # format.xml { head :ok } format.pdf { send_data render_to_pdf( :action => ''christmas'', :layout => ''pdf_report''), :filename => "Christmas_report_for_" + Date.today.strftime(''%Y'') } end end def copy result = `~/foodshelf/script/copy` flash[:notice] = ''Copy completed'' redirect_to(:action => ''index'') end def create #debugger @household = Household.new() @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} #debugger fix_dates if @household.update_attributes(params[:household]) @v Visit.find_or_create_by_household_id_and_month_and_year(:household_id => params[:id], :month => @month, :year => @year) @v.update_attributes(params[''visit'']) flash[:notice] = ''Household was successfully saved.'' redirect_to households_path else #debugger flash[:notice] = ''Create failed - look for a red field name'' render(:action => :new) end end # DELETE /households/1 # DELETE /households/1.xml def destroy # debugger @household = Household.find(params[:id]) flash[:notice] = ''Household was deleted.'' @household.destroy # @delcmd = ''delete from visits where household_id = '' + @household.id.to_s # debugger # Visit.connection.execute(@delcmd) # flash[:notice] = "Successfully destroyed household." redirect_to(households_url) end def daysinmonth(mon) (Date.new(Time.now.year,12,31).to_date<<(12-mon)).day end # GET /households/1/edit def edit # debugger @today = Date.today @household = Household.find(params[:id]) @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} # debugger fix_dates @v Visit.find_or_create_by_household_id_and_month_and_year(:household_id => params[:id], :month => @month, :year => @year) @monthly = @v.monthly # debugger end def fix_dates # Get week of next Thursday # week is week of month @today = Date.today @day = @today.strftime(''%d'').to_i if (@day>8) @thisthurs = Chronic.parse(''last thursday'') else @thisthurs = Chronic.parse(''next thursday'') end @dayofthisthurs = @thisthurs.strftime(''%d'').to_i @monthofthisthurs = @thisthurs.strftime(''%m'').to_i @yearofthisthurs = @thisthurs.strftime(''%Y'').to_i @month = Date.today.mon() @daysinmonth = daysinmonth(@month) @year = @yearofthisthurs @dayoffirstthurs = @dayofthisthurs while @dayoffirstthurs>7 @dayoffirstthurs -= 7 end #debugger if (@day <= @dayoffirstthurs) # for getting correct week for fruit/ bread @week = 1 @monthname = @today.strftime(''%B'') elsif (@day <= @dayoffirstthurs+7) @week = 2 @monthname = @today.strftime(''%B'') elsif (@day <= @dayoffirstthurs+14) @week = 3 @monthname = @today.strftime(''%B'') elsif (@day <= @dayoffirstthurs+21) @week = 4 @monthname = @today.strftime(''%B'') elsif (@day <= @dayoffirstthurs+28 && @dayoffirstthurs+28 <daysinmonth(@month)) @week = 5 @monthname = @today.strftime(''%B'') else @week = 1 @nextmonth = @today>>1 @monthname = @nextmonth.strftime(''%B'') end end def get_person session[:person] ||= Person.new end def hidden $hidden = 1 redirect_to(households_url) end def idreport @today = Date.today # @test2= Household.find(:all) # @test = @test2.sort_by{|c| [c.name_list, c.second_name_list] } @idstring = sprintf("select households.id, households.last_name, households.first_name from households order by last_name, first_name") # debugger @id = Household.find_by_sql(@idstring) respond_to do |format| # format.xml { head :ok } format.pdf { send_data render_to_pdf( :action => ''idreport'', :layout => ''pdf_report''), :filename => "ID_List_for_" + @today.strftime(''%m%d%%Y'') } end end # GET /households # GET /households.xml def index conditions = ["last_name like ? ", "#{params[:search]}%"] if $hidden == 1 then @households = ArchivedHousehold.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions else @households = Household.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions $hidden = 0 end end def monthly #debugger @start = Date.new(params[:year].to_i, params[:month].to_i, 1) @end = @start>>1 @newstring = sprintf("select last_name, first_name from households where start_date >= ''%10s'' and start_date < ''%10s'' order by last_name, first_name;",@start,@end) # debugger @new = Household.find_by_sql(@newstring) @repeatstring = sprintf("select households.last_name, households.first_name from households,visits where " + "households.id=visits.household_id and visits.month=''%2d'' and visits.year = ''%4d'' " + "and visits.monthly = 1 and (households.start_date>= ''%10s'' or households.start_date < ''%10s'') " +"order by households.last_name,households.first_name;", @start.month, @start.year, @end, @start) @repeat = Household.find_by_sql(@repeatstring) @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} respond_to do |format| # format.xml { head :ok } format.pdf { send_data render_to_pdf( :action => ''monthly'', :layout => ''pdf_report''), :filename => "Monthly_report_for_" + @start.strftime(''%B'') + "_" + @start.year.to_s } end end # GET /households/new # GET /households/new.xml def new @today = Date.today @lastthurs = Chronic.parse(''last thursday of month'') @dayoflastthurs = @lastthurs.strftime(''%d'').to_i @household = Household.new @household.people.build fix_dates end def print # debugger @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} # @households = Household.find(:all, :order => "last_name, first_name") @households = Household.find(278,279) # encrypt ?? # if not encrypted, delete ? date=`date +%Y%m%d-%H:%M` respond_to do |format| format.pdf { send_data render_to_pdf( :action => ''print'', :layout => ''pdf_report''), :filename => "Household_List_for_" + date } end end def putadmin debugger end def reset_links Household.find(:all).each { |h| if h.sfirst_name.nil? then h.sfirst_name='' '' end if h.smiddle.nil? then h.smiddle='' '' end if h.slast_name.nil? then h.slast_name='' '' end h.save } redirect_to(households_url) end def restore Household.restore_all([ ''id = ?'', params[:id] ]) flash[:notice] = ''Household was restored.'' $hidden = 0 redirect_to(households_url) end def search conditions = ["last_name like ?", "#{params[:search]}%"] if $hidden == 0 then @households = Household.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions else @households = ArchivedHousehold.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions end render :partial=>"search", :layout=>false end # POST /households # POST /households.xml # PUT /households/1 # PUT /households/1.xml def update @household = Household.find(params[:id]) @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} fix_dates @v Visit.find_or_create_by_household_id_and_month_and_year(:household_id => params[:id], :month => @month, :year => @year) if @week == 1 then @xweek = @v.week1 @yweek = params[:visit][:week1].to_i elsif @week == 2 then @xweek = @v.week2 @yweek = params[:visit][:week2].to_i elsif @week == 3 then @xweek = @v.week3 @yweek = params[:visit][:week3].to_i elsif @week == 4 then @xweek = @v.week4 @yweek = params[:visit][:week4].to_i elsif @week == 5 then @xweek = @v.week5 @yweek = params[:visit][:week5].to_i end if @v.monthly != params[:visit][:monthly].to_i || @xweek != @yweek @today = Date.today @begin = Date.new(@today.year,7,1) if @household.start_date < @begin then @household.start_date = @today end end @v.update_attributes(params[''visit'']) # debugger if @household.update_attributes(params[:household]) flash[:notice] = ''Household was successfully updated.'' redirect_to households_path else flash[:notice] = ''Create failed - look for a red field name'' @churches = Church.find(:all, :order => "name").map {|u| [u.name, u.id]} render :action => "edit" end end def watch_address # debugger if @match = Household.find_by_address(params['':address'']) render :partial => "address_match" else render(:nothing=>true) end end def watch_church # debugger if (params['':zip''] != "01540") && (params['':zip''] != "01537") && (params['':zip''] != "01611") then render :partial => "church_select" else render(:nothing=>true) end end end Index.html.erb <h1>Index of Households</h1> <%= text_field_tag ''search'', params[''search''], :autocomplete => "off" %> <%= observe_field ''search'', :frequency => 0.5, :update => ''searchdiv'', :url => {:controller => ''households'', :action => ''search''}, :with => "''search='' + encodeURIComponent(value) " %> <div id=''searchdiv''> <%= render :partial=>"search" %> </div> <pre> <% form_tag new_household_path do%> <%= if $hidden == 0 then submit_tag "New household" end %> <% end %> <%= will_paginate @households %> <%= link_to ''Admin'', admin_path %> <%= if $hidden == 1 then link_to "Back", { :action => :back } end %> </pre> <%= javascript_tag(''$("search").focus();'') %> -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
Sandy wrote:> On Aug 25, 10:39�am, Ar Chron <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: >> >> Yes, that would change the landscape a bit. �Sounds like Sandy''s >> solution has the right of it by using @households to build @sorted, >> thereby replicating the household record for each resident. >> >> -- >> Posted viahttp://www.ruby-forum.com/. > > > I think that was the issue that Bob was trying to address, and I''m > hoping it was due to his having inherited some legacy flat file > database, and possilby not knowing how to normalize it, or being > prevented from doing so by something else in the application which > uses the households table. Otherwise, the application cries out for > relationships between a Person model (a "belongs_to :household" > relationship) and the Household model (a "has_many :people"). While > this does complicate, slightly, the addition of people to households, > it would be a better way to approach the problem, and it would allow > for more than two "authorized receivers" per household (although I > have no idea of what the business rules are for his application, and > they could be... 2 and only 2 per household). > > Next, @sorted, as defined in the households_controller, does not > replicate the household record for each "authorized receiver" (I > prefer that term, rather than "resident", because a household could > include many residents, only two of whom are authorized to receive > food from the food bank). What @sorted does is to provide an array > sorted by the names of the "authorized users" with the id of the > relevant household record. With that id, one can use Household.find > to obtain the relevant household record and then obtain any other > field from that record. Of course, if any additional fields were > needed in the view, they could be added to the hash in the @sorted > array when it was created in the controller, thereby avoiding the need > to do the lookups in the view and keeping the data access logic out of > the view. > > While I did use @households in the households_controller, the only > reason I did that was so that I could display both households and > receivers in the same index.html.erb view, so that it was clear that > the @sorted array was providing the "authorized users" in their sorted > order with the id of the relevant household record. Otherwise, better > practice would be to have households be a local variable within the > controller. > > SandyMany thanks again Sandy. Another problem has appeared. The list is created and displayed correctly, but won''t let the search function narrow down the list. This works perfectly using the Household variable, but won''t narrow the search using the array created by adding both names together. The way I have it, the person entering the information only needs to get a persons license and enter the first few letters of the last name, narrowing the list down to a few entries that match and clicking the edit link next to the name wanted. This search function, paginate, and the use of an array other than the Household variable don''t seem to work together. I included the parts of controller and view that have this problem.. household_controller.rb def make_double_list @households = Household.all $households = Array.new @sorted = Array.new # debugger for n in @households do @sorted << { :last_name => n.last_name, :first_name => n.first_name, :address => n.address, :id => n.id } if !n.slast_name.blank? then @sorted << { :last_name => n.slast_name, :first_name => n.sfirst_name, :address => n.address, :id => n.id } end end $households = @sorted.sort_by { |x| x[:last_name] } end def index make_double_list if $hidden.blank? then $hidden = 0 end #debugger conditions = ["last_name like ? ", "#{params[:search]}%"] if $hidden == 0 then @households = Household.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions else @households = ArchivedHousehold.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions $hidden = 0 end end def search # debugger conditions = ["last_name like ?", "#{params[:search]}%"] if $hidden == 0 then @households = Household.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions debugger else @households = ArchivedHousehold.paginate :per_page => 16, :page => params[:page], :order => ''last_name'', :conditions => conditions end render :partial=>"search", :layout=>false end index.html.erb <h1>Index of Households</h1> <%= text_field_tag ''search'', params[''search''], :autocomplete => "off" %> <%= observe_field ''search'', :frequency => 0.5, :update => ''searchdiv'', :url => {:controller => ''households'', :action => ''search''}, :with => "''search='' + encodeURIComponent(value) " %> <div id=''searchdiv''> <%= render :partial=>"search" %> </div> <pre> <% form_tag new_household_path do%> <%= if $hidden == 0 then submit_tag "New household" end %> <% end %> <%= will_paginate @households %> _search.html.erb <table width=''75%'' cellspacing=5> <tr> <th></th> <th width=''25%'' align=left>Last Name</th> <th width=''25%'' align=left>First Name</th> <th width=''50%'' align=left>Address</th> </tr> <% for n in @households %> <tr> <% if $hidden == 0 %> <td><%= link_to ''Edit'', :action => ''edit'', :id => n[:id] %></td> <% end %> <% if $hidden == 1 %> <td><%= link_to ''Restore'', :action => ''restore'', :id => n[:id] %></td> <% end %> <td><%= n[:last_name] %></td> <td><%= n[:first_name] %></td> <td><%= n[:address] %></td> <td></td> <% if $hidden == 0 %> <td><%= link_to ''Delete'', :action => ''delete'', :id => n[:id], :confirm => ''Are you sure ?'' %></td> <% end %> </tr> <% end %> </table> -- Posted via http://www.ruby-forum.com/. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.