はじめに
最初にcontrollerの雛形を作成するのは以下の記事を参考にする。
Ruby + bundler + Rails => Hello World
controllerの編集
app/controller/sample_controller.rb(MySQLの接続情報はべた書き、パラメータのエスケープなし)
※もちろんmariaDBでも動作する。
class SampleController < ApplicationController
def index
p params
order = "asc"
if params['order'].present?
order = params['order']
end
records = Hash.new
client = Mysql2::Client.new(:host => "xxx.xxx.xxx.xxx", :username => "user", :password => "password", :database => "dbname")
sql = "SELECT id,user_nane FROM sample"
if params['id'].present?
sql << " where"
sql << " id = '"+ params['id'] + "'"
end
sql << " order by id " + order
sql << " limit 10"
p sql
client.query(sql).each do |row|
records[row['id']] = row
end
client.close
@result = records
p @result
end
end
viewの編集
viewではただjsonを返すだけのページを用意する。
app/views/sample/index.js.erb
<%=raw @result.to_json%>
viewのファイル名をxxxx.js.erbとするところがミソっぽい。
javascript
呼び出し側のjavascriptの例。
JQueryの場合
dataTypeをjsonにする。
return $.ajax({
url: '/sample/index?order=desc',
type: 'get',
dataType: 'json'
})
.always(function(){
console.log("success");
})
.fail(function(){
console.log("error");
});
angularjsの場合
urlのパスの最後に.jsをつける。
var params = {
order: 'desc'
};
return $http({
method: 'GET',
url:'/sample/index.js',
params: params,
responseType: 'json'
}).then(function(response) {
return response.data;
});