OK, I was able to reproduce your error and am working on a fix. If you don't get a timely response for Hobo issues, please create one in Github. Occasionally I will miss issues raised on the mailing list, but if it's on Github I can't ignore it.
cheers, Bryan On Wed, Nov 7, 2012 at 8:19 AM, Bob Sleys <[email protected]> wrote: > I'm still stuck on this one. > I did try turning deprecated routes back and it didn't fix it. > Any help if finding word around would be appreciated. > > Bob > > > On Tuesday, October 23, 2012 11:04:13 AM UTC-4, Bob Sleys wrote: >> >> Has there been any update on this? Could I add something to my routes.rb >> as a work around? If so any hints would be appreciated. >> >> Thanks >> Bob >> >> On Wednesday, October 10, 2012 11:04:51 AM UTC-4, Bryan Larsen wrote: >>> >>> The new page uses the right path, but the edit page doesn't? Sounds >>> like a bug alright, paths was the last major change to land in Hobo >>> 2.0, so it's probably a bug in Hobo. Can you send the full back >>> trace? >>> >>> thanks, >>> Bryan >>> >>> >>> On Wed, Oct 10, 2012 at 11:01 AM, Bob Sleys <[email protected]> wrote: >>> > GRR I thought I had this all done but now I getting the following error >>> > on >>> > an edit page, note prior to this I was playing around with creating a >>> > new >>> > record >>> > >>> > NoMethodError in Machines#edit >>> > >>> > Showing controller: machines; dryml-tag: edit-page where line #1 >>> > raised: >>> > >>> > undefined method `complete_select_model_machine_path' for >>> > #<#<Class:0x00000005b071d8>:0x00000005b0e028> >>> > >>> > The path the auto completer in my mode is creating is >>> > >>> > complete_select_model_machines GET >>> > /machines/complete_select_model(.:format) >>> > machines#complete_select_model >>> > >>> > Note the plural on the machines but the edit form is looking for the >>> > singular form. >>> > >>> > My dryml is using the following >>> > >>> > <machine-model-view:> >>> > <name-one complete-target="&@machine" completer="select_model"/> >>> > </machine-model-view:> >>> > >>> > as part of the machine form tag. >>> > >>> > Bob >>> > >>> > On Wednesday, October 10, 2012 10:30:52 AM UTC-4, Bob Sleys wrote: >>> >> >>> >> Ok one more follow up on this for anyone else following this >>> >> >>> >> Since I'm returning a string that is a composite of two fields across >>> >> two >>> >> models and I'm overiding the name of the model to do the same there is >>> >> no >>> >> proper automatic find_by_name so I had to provide my own. >>> >> >>> >> That probably wasn't very clear so here are the details. >>> >> >>> >> In my model MachineModel I don't have an automatic name field. >>> >> Instead I >>> >> provided my own >>> >> >>> >> def name >>> >> "#{manufacturer.name} - #{model_of_machine}" >>> >> end >>> >> >>> >> since my name is comprised of both a field on the MachineModel and a >>> >> field >>> >> in the model Manufacturer an automatic find_by_name won't work so I >>> >> had to >>> >> create my own like so. >>> >> >>> >> def self.find_by_name(query) >>> >> query = query.split(' - ').map {|term| "%#{term}%" } >>> >> sql = >>> >> >>> >> self.includes(:manufacturer).where(Manufacturer.arel_table[:name].matches(query[0])) >>> >> sql = >>> >> >>> >> sql.where(MachineModel.arel_table[:model_of_machine].matches(query[1])) >>> >> if >>> >> query[1] >>> >> sql.first >>> >> end >>> >> >>> >> Note I split on the - this time because my name uses it to separate >>> >> the >>> >> two fields. This will be a problem if a manufacturer name has a dash >>> >> in it. >>> >> (don't know a good way to avoid that. >>> >> >>> >> This was all required because of the name-one the Bryan helped me >>> >> with. >>> >> >>> >> In my Machine form I have >>> >> <machine-model-view:> >>> >> <name-one complete-target="&@machine" completer="select_model"/> >>> >> </machine-model-view:> >>> >> >>> >> This create a text box with auto complete which calls the >>> >> autocompleter in >>> >> the machine controller >>> >> >>> >> autocomplete :select_model do >>> >> hobo_completions :name, MachineModel.scoped() >>> >> end >>> >> >>> >> This in turn calls the name_contains in MachineModel >>> >> >>> >> def self.name_contains(query) >>> >> query = query.split.map {|term| "%#{term}%" } >>> >> sql = >>> >> >>> >> self.includes(:manufacturer).where(Manufacturer.arel_table[:name].matches(query[0])) >>> >> sql = >>> >> >>> >> sql.where(MachineModel.arel_table[:model_of_machine].matches(query[1])) >>> >> if >>> >> query[1] >>> >> sql >>> >> end >>> >> >>> >> Note since the name was defined to return the manufacture - >>> >> machine_model >>> >> it's that string that is used to save the machine record. When saving >>> >> the >>> >> new machine record it needs to find the corresponding machine_model >>> >> record >>> >> to get it's id. Thus the need for the find_by_name I began with. >>> >> >>> >> Hope that name some sense, for when I try this again in 6 months and >>> >> forget all the details other than "I did that once before:. >>> >> >>> >> Bob >>> >> >>> >> On Wednesday, October 10, 2012 9:56:26 AM UTC-4, Bob Sleys wrote: >>> >>> >>> >>> Thank you very much. >>> >>> >>> >>> FYI though this could probably be improved this is what I ened up >>> >>> with in >>> >>> my model >>> >>> >>> >>> def self.manufacturer_model_contains(query) >>> >>> query = query.split.map {|term| "%#{term}%" } >>> >>> sql = >>> >>> >>> >>> self.includes(:manufacturer).where(Manufacturer.arel_table[:name].matches(query[0])) >>> >>> sql = >>> >>> >>> >>> sql.where(MachineModel.arel_table[:model_of_machine].matches(query[1])) >>> >>> if >>> >>> query[1] >>> >>> sql >>> >>> end >>> >>> >>> >>> Bob >>> >>> >>> >>> On Wednesday, October 10, 2012 3:36:57 AM UTC-4, Bryan Larsen wrote: >>> >>>> >>> >>>> On Tue, Oct 9, 2012 at 3:09 PM, Bob Sleys <[email protected]> wrote: >>> >>>> > Ok getting closer >>> >>>> > >>> >>>> > Now I getting the following error >>> >>>> > >>> >>>> > undefined method `manufacturer_model_contains' for >>> >>>> > #<ActiveRecord::Relation:0x00000006c13350> >>> >>>> > >>> >>>> > >>> >>>> > Do I need to add a method to my model to handle it? If so what >>> >>>> > would >>> >>>> > it >>> >>>> > look like. IE is it doing to search for the query string? >>> >>>> >>> >>>> That's right. >>> >>>> http://cookbook.hobocentral.net/manual/scopes#_contains >>> >>>> >>> >>>> You can do it with: >>> >>>> >>> >>>> def self.manufacturer_model_contains(query) >>> >>>> >>> >>>> >>> >>>> self.includes(:manufacturer).where(Manufactuer.arel_table[:name].matches(query)) >>> >>>> + self.model_of_machine_contains(q) >>> >>>> end >>> >>>> >>> >>>> Note how I'm using AREL for the first clause. That way it will >>> >>>> automatically switch to ILIKE in postgres. >>> >>>> >>> >>>> One thing the above doesn't do is split your query: if the user >>> >>>> supplies a search for both the model & manufacturer, it will fail. >>> >>>> This shows how to do that: >>> >>>> >>> >>>> >>> >>>> >>> >>>> http://stackoverflow.com/questions/4027276/help-with-rails-active-record-querying-like-clause >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> > Groups >>> > "Hobo Users" group. >>> > To view this discussion on the web visit >>> > https://groups.google.com/d/msg/hobousers/-/nJZd8cpOMmsJ. >>> > >>> > To post to this group, send email to [email protected]. >>> > To unsubscribe from this group, send email to >>> > [email protected]. >>> > For more options, visit this group at >>> > http://groups.google.com/group/hobousers?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Hobo Users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/hobousers/-/e50F-SeLgRMJ. > > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/hobousers?hl=en. -- You received this message because you are subscribed to the Google Groups "Hobo Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/hobousers?hl=en.
