Aha!  That did it!  Thank you!!
Morgan.

On Nov 4, 6:15 am, Pat Allan <[email protected]> wrote:
> Ah... If you have_many :subjects, then your reference in your define_index 
> block should be plural as well:
>
>   indexes subjects.name, :as => :subjects
>
> Or was that a typo in the email, but not the code?
>
> --
> Pat
>
> On 04/11/2010, at 3:32 AM, Morgan Kay wrote:
>
> > Yes, I have.  Any other suggestions?
>
> > Thank you!
> > Morgan.
>
> > On Nov 2, 11:41 pm, Pat Allan <[email protected]> wrote:
> >> Hi Morgan
>
> >> Have you run 'rake ts:rebuild' so Sphinx is aware of your changes? I can't 
> >> spot anything immediately wrong with what you're doing.
>
> >> Cheers
>
> >> --
> >> Pat
>
> >> On 03/11/2010, at 2:28 PM, Morgan Kay wrote:
>
> >>> Okay, so now I'm adding more search fields to this, and I'm having
> >>> trouble getting it to work.  Eventually I am going to end up needing
> >>> to search on about 20 fields, and 7 of those are in related tables.
> >>> Some of them are has_many, and some are has_many, :through.
>
> >>> Here's what I've done so far with one of the has_many tables:
>
> >>> -------------------------------
> >>> source.rb---------------------------------------------
> >>> class Source < ActiveRecord::Base
> >>>  has_many :subjects
>
> >>>  define_index do
> >>>    indexes :text_name
> >>>    indexes :editor
> >>>    indexes :region
> >>>    indexes subject.name, :as => :subject
>
> >>>    has created_at, updated_at
> >>>  end
> >>> ------------------------------------------------------------------------------------------
>
> >>> -------------------------
> >>> sources_controller.rb-------------------------------------
> >>> class SourcesController < ApplicationController
> >>>   def index
> >>>     @sources = Source.search :conditions => field_conditions, :page
> >>> => params[:page]
> >>>   end
>
> >>>   def field_conditions
> >>>     %w( text_name editor region subject ).inject({}) do |hash, field|
> >>>      hash[field.to_s] = params[field] if params[field].present?
> >>>      hash
> >>>    end
> >>>  end
> >>> -------------------------------------------------------------------------------------------
>
> >>> ------------------------
> >>> index.html.erb------------------------------------------------
> >>> <% form_tag "", :method => :get do -%>
> >>>  <fieldset><legend>Search the Online Medieval Sources Bibliography</
> >>> legend>
> >>>    Text Name:           <%= text_field_tag :text_name %><br />
> >>>    Editor:              <%= text_field_tag :editor %><br />
> >>>    County/Region:       <%= text_field_tag :region %><br />
> >>>    Subject:                         <%= text_field_tag :subject %>
> >>>  </fieldset>
> >>> <p>
> >>>  <%= submit_tag "Search" %>
> >>> </p>
> >>> <% end -%>
> >>> -------------------------------------------------------------------------------------------
>
> >>> If I put anything in the "Subject" search field, I get no results.  So
> >>> now what should I be doing?
>
> >>> Thanks!
> >>> Morgan.
>
> >>> On Oct 28, 10:20 pm, Pat Allan <[email protected]> wrote:
> >>>> Hi Morgan
>
> >>>> With three fields, you're going to want to link each param to the 
> >>>> appropriate field in your index. So, with that in mind, the code might 
> >>>> look a little like the following:
>
> >>>>   def index
> >>>>     Source.search :conditions => field_conditions, :page => params[:page]
> >>>>   end
>
> >>>>   private
>
> >>>>   def field_conditions
> >>>>     %w( text_name editor region ).inject({}) do |hash, field|
> >>>>       hash[field.to_s] = params[field] if params[field].present?
> >>>>       hash
> >>>>     end
> >>>>   end
>
> >>>> This will build up the conditions hash only when there's actually text 
> >>>> to search for in that field.
>
> >>>> Let me know if this isn't clear, or if you have more questions :)
>
> >>>> --
> >>>> Pat
>
> >>>> On 29/10/2010, at 10:10 AM, Morgan Kay wrote:
>
> >>>>> I'm new to Thinking Sphinx, and have been a little stymied because
> >>>>> there aren't many tutorials out there.  I have two search forms on my
> >>>>> site.  One just searches one field, so that's super easy, and I have
> >>>>> that up and working just fine.  The other is more difficult, because I
> >>>>> need to search several fields.  I'm starting with just three for now.
>
> >>>>> Here's my model:
> >>>>> --------------------------------Source.rb----------------------------
> >>>>> class Source < ActiveRecord::Base
>
> >>>>>  define_index do
> >>>>>    indexes :text_name
> >>>>>    indexes :editor
> >>>>>    indexes :region
>
> >>>>>    has created_at, updated_at
> >>>>>  end
>
> >>>>> end
> >>>>> --------------------------------------------------------------------------
>
> >>>>> Here's the controller:
> >>>>> ------------------------Sources_controller.rb--------------------
> >>>>> class SourcesController < ApplicationController
>
> >>>>>  def index
> >>>>>   �...@sources = Source.search( (params[:search] || ""), :page=>
> >>>>> (params[:page] || 1))
> >>>>>  end
>
> >>>>> ...
> >>>>> ---------------------------------------------------------------------------
>
> >>>>> And the view:
> >>>>> ------------------------index.html.erb------------------------------
> >>>>> <% unless @sources.empty? %>
> >>>>>  <div id="results">
> >>>>>    <%= render :partial => "results" %>
> >>>>>  </div>
> >>>>> <% end %>
>
> >>>>> <% form_tag "", :method => get do -%>
> >>>>>  <fieldset>
> >>>>>    Text Name: <%= text_field_tag :text_name %><br />
> >>>>>    Editor: <%= text_field_tag :editor %><br />
> >>>>>    County/Region: <%= text_field_tag :region %>
> >>>>>  </fieldset>
> >>>>>  <%= submit_tag "Search" %>
> >>>>> <% end -%>
> >>>>> --------------------------------------------------------------------------
>
> >>>>> I know that the problem is in my text_field_tags.  On the form where I
> >>>>> am just searching one field, I have "text_field_tag :search", and that
> >>>>> works just fine, but when I am searching multiple fields, what
> >>>>> parameters should I put in the text_field_tag?
>
> >>>>> For what it's worth, when I do a search using this form, the URL
> >>>>> contains the right parameters (http://localhost:3000/sources?
> >>>>> text_name=canterbury&editor=&region=&commit=Search), but it shows all
> >>>>> of the records, not just the ones that match the search criteria.
>
> >>>>> What do I need to be doing differently?
>
> >>>>> Thank you!
> >>>>> Morgan.
>
> >>>>> --
> >>>>> You received this message because you are subscribed to the Google 
> >>>>> Groups "Thinking Sphinx" 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 
> >>>>> athttp://groups.google.com/group/thinking-sphinx?hl=en.
>
> >>> --
> >>> You received this message because you are subscribed to the Google Groups 
> >>> "Thinking Sphinx" 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 
> >>> athttp://groups.google.com/group/thinking-sphinx?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Thinking Sphinx" 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 
> > athttp://groups.google.com/group/thinking-sphinx?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" 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/thinking-sphinx?hl=en.

Reply via email to