Hi Frank
The .order method on models is for SQL queries, not Sphinx searches, so you
can't mix the two together. If you want to use sort_column and sort_direction,
then pass the string you're building with the :order option (which it seems
you're currently doing with :created_at):
Shruffle.search params[:search], :order => "#{sort_column} #{sort_direction}"
Also, I'd recommend reading up on the differences between attributes and fields
- you probably don't want/need price, org_percent or created_at to be fields.
Attributes are inherently sortable (indeed, when fields are marked as sortable,
Thinking Sphinx is just creating an attribute in the background to fulfil that
purpose).
http://freelancing-god.github.com/ts/en/sphinx_basics.html
Hope this helps.
--
Pat
On 16/08/2012, at 3:22 PM, frankphilips wrote:
> Hi,
>
> I'm a noob to Rails, and I need some help. In Railscast 240, Ryan talks about
> creating sortable table columns with ajax search:
> http://railscasts.com/episodes/240-search-sort-paginate-with-ajax
>
> However when I try to combine Thinking Sphinx rather then using the standard
> search Ryan mentions, it breaks my sortable table columns. I'm sure there is
> a quick way to fix this. Please help! Thanks :)
>
> Here's my code:
>
> MODEL:
>
> define_index do
>
> indexes :title, sortable: true
> indexes :desc, sortable: true
> indexes email
> indexes :org, sortable: true
> indexes org_percent
> indexes :price, sortable:true
> indexes :city, sortable: true
> indexes :created_at, sortable: true
>
> has created_at, updated_at
>
> end
>
> CONTROLLER:
>
> helper_method :sort_column, :sort_direction
> def index
> @shruffles = Shruffle.order(sort_column + ' ' +
> sort_direction).search(params[:search], :order => :created_at,
> :sort_mode => :desc)
>
> APPLICATION HELPER:
>
> def sortable(column, title = nil)
> title ||= column.titleize
> css_class = (column == sort_column) ? "current #{sort_direction}" : nil
> direction = (column == sort_column && sort_direction == "asc") ? "desc" :
> "asc"
> link_to title, {:sort => column, :direction => direction}, {:class =>
> css_class}
> end
>
> VIEW:
>
> <%= hidden_field_tag :direction, params[:direction] %>
> <%= hidden_field_tag :sort, params[:sort] %>
>
> <table class="pretty">
> <tr align="left">
>
> <th><%= sortable "title" %></th>
> <th><%= sortable "price" %></th>
> <th><%= sortable "city" %></th>
> <th><%= sortable "org", 'Non-Profit' %></th>
> <th><%= image_tag "ico-heart.png" %> <%= sortable "org_percent",
> 'Donation %' %></th>
> <th><%= sortable "created_at", 'Date' %></th>
> </tr>
>
> <% for shruffle in @shruffles %>
>
> <tr>
> <td><%= link_to shruffle.title, shruffle %></td>
> <td class="price"><%= number_to_currency(shruffle.price)
> %></td>
> <td><%= shruffle.city %></td>
> <td><%= shruffle.org %></td>
> <td><%= shruffle.org_percent %>%</td>
> <td><%= shruffle.created_at.strftime("%b %d, %Y") %></td>
> </tr>
> <% end %>
> </table>
>
> -Frank
>
> --
> You received this message because you are subscribed to the Google Groups
> "Thinking Sphinx" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/thinking-sphinx/-/Ls4y1X2qT5YJ.
> 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.
>
--
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.