All threads / How do I search Action Text with Ransack?

Ask A Question

Notifications

You’re not receiving notifications from this thread.

How do I search Action Text with Ransack?

Ryan Carter asked in Rails

I have set up a basic search using Ransack but I don't understand how to get it to search Action Text. This is how it is implimented in the search_form_for:

f.search_field :title_or_rcontent_or_city_or_state_i_cont

The rcontent is the Action Text portion.

For anyone else searching for this issue, I found a solution.

Add this to your model -
has_one :action_text_rich_text,
class_name: 'ActionText::RichText',
as: :record

And then add or_action_text_rich_text_body to your search field, because "body" is what is created when the ActionText migration is created.

Thank you! I am now getting duplicates in my searches though. Did that happen to you?

Let's say you have an ActionText field like so:

has_rich_text :body

You can join that without defining another association like so:

joins(:rich_text_body)

One option could be to do a full text search in PostgreSQL:

joins(:rich_text_body).where("to_tsvector(action_text_rich_texts.body) @@ websearch_to_tsquery('english', ?)", phrase)

One of the reasons I went with this approach was to help make the HTML-formatted text a bit easier to search through, and give the user a bit more flexibility. For example, since I used the websearch_to_tsquery, it supports things like quoting to search for a phrase, etc.

EDIT Heh just noticed this is a rather old thread. Anyway, maybe this will help someone in the future!

Thanks, I will play around with it and see what I can figure out.

Join the discussion

Want to stay up-to-date with Ruby on Rails?

Join 45,516+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.

    logo Created with Sketch.

    Ruby on Rails tutorials, guides, and screencasts for web developers learning Ruby, Rails, Javascript, Turbolinks, Stimulus.js, Vue.js, and more. Icons by Icons8

    © 2021 GoRails, LLC. All rights reserved.