質問編集履歴

1 result : string⇒result : jsonに変更

pon.

pon. score 5

2017/02/03 15:56  投稿

RailsのRansackで_contがうまく動作しない
最近Railsでのアプリ開発をはじめました。
非常に初歩的な質問かもしれませんが、
現在、Articleモデル内のデータ検索というシンプルな検索画面をransackを利用して作成しています。
↓↓↓ Articleモデル ↓↓↓
id : integer
result : string
result : json
created : datetime
↓↓↓ Controller ↓↓↓
```ruby
class ArticlesController < ApplicationController
 def index
   @q = Article.ransack(params[:q])
   @data = @q.result.order(:id)
 end
end
```
↓↓↓ View(Form部分) ↓↓↓
```ruby
<%= search_form_for(@q, :url => {:controller => :article, :action => :index}) do |f| %>
 <div class="input-field">
   <div class="col s12">
     <%= f.text-field :result_cont %>
     <%= f.label :result_cont, "検索キーワード" %>
   </div>
   <div class="row col s12">
     <%= f.submit "Search", :class => "waves-effect waves-light btn" %>
   </div>
 </div>
<% end %>
```
↓↓↓ 出力されるSQL ↓↓↓
```sql
SELECT `articles`.*
 FROM `articles`
WHERE (`articles`.`result` LIKE '\"%a%\"')
ORDER BY `articles`.`id` ASC
```
期待している結果はWHEREの部分が
WHERE (`articles`.`result` LIKE '%a%')
なのですが、自動的にダブルクオーテーションが付きエスケープされてしまっています。
Google等で検索したのですが、同様の現象がでてこず。。。
ご存知の方がいらっしゃれば解決策を教えてください。
よろしくお願いします。
  • Ruby on Rails

    8850 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る