現在、Railsアプリケーションで簡単な検索機能を使用しています。私はVue.jsを使用していますので、RailsのJSON Builderを使用してすべてをフロントエンドに提供しています。検索のために私はように、コントローラとモデルのセットアップを持っている:json with railsで検索結果を送信
コントローラ:
def index
if params[:search]
@strains = Strain.search(params[:search]).order("created_at DESC")
else
@strains = Strain.all.order("created_at DESC")
end
respond_to do |format|
format.html
format.json { render :json => @strains }
end
end
モデル:
def self.search(search)
where('title LIKE ?', '%#{search}%')
end
ビュー:
<%= form_tag(strains_path, :method => "get") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Strains" %>
<%= submit_tag "Search", :name => nil %>
<% end %>
I型検索では、URLのparamsを更新しますが、ページの出力には何も起こりません。私はそれがJSONと関係があると思っています。これは、Vueコンポーネントの中の私の準備ができた機能です。
ready: function() {
var that;
that = this;
$.ajax({
url: '/strains.json',
success: function(res){
that.strains = res;
}
});
}
ログを見ていますが、JSONではなくHTMLを検索するようです。ここで
はログです:Started GET "/strains.json" for ::1 at 2016-05-23 21:40:32 -0400
Processing by StrainsController#index as JSON
Strain Load (0.2ms) SELECT "strains".* FROM "strains" ORDER BY created_at DESC
Completed 200 OK in 2ms (Views: 1.8ms | ActiveRecord: 0.2ms)
Started GET "/strains?utf8=%E2%9C%93&search=Test" for ::1 at 2016-05-23 21:41:07 -0400
Processing by StrainsController#index as HTML
Parameters: {"utf8"=>"✓", "search"=>"Test"}
Strain Load (0.2ms) SELECT "strains".* FROM "strains" WHERE (title LIKE '%Test%') ORDER BY created_at DESC
Rendered strains/index.html.erb within layouts/application (1.5ms)
Completed 200 OK in 17ms (Views: 16.3ms | ActiveRecord: 0.2ms)
Started GET "/strains.json" for ::1 at 2016-05-23 21:41:07 -0400
Processing by StrainsController#index as JSON
Strain Load (0.1ms) SELECT "strains".* FROM "strains" ORDER BY created_at DESC
Completed 200 OK in 2ms (Views: 1.4ms | ActiveRecord: 0.1ms)
固定されています。しかし、私は問題がコントローラーのjsonをレンダリングしていると思います。 – Dileet