Making a RAW SQL connection and rendering JSON for custom auto complete field: Difference between revisions

From Elvanör's Technical Wiki
Jump to navigation Jump to search
No edit summary
 
Line 1: Line 1:
In any model class:
== In any model class ==


<pre>
def self.labels_for_autocomplete(auto_c_req)
def self.labels_for_autocomplete(auto_c_req)
     connection.select_all("SELECT label FROM companies WHERE LOWER(label) LIKE '#{auto_c_req.downcase}%' ORDER BY label ASC LIMIT 10 ")
     connection.select_all("SELECT label FROM companies WHERE LOWER(label) LIKE '#{auto_c_req.downcase}%' ORDER BY label ASC LIMIT 10 ")
end
end
</pre>


connection outpass ActiveRecords and does not cast results as Ruby objects.
* The connection outpass ActiveRecords and does not cast results as Ruby objects.


in the controller:
== In the controller ==


<pre>
def suggest_entreprises
def suggest_entreprises
    if request.xhr?
    if request.xhr?
      if request.post?
        if request.post?
      auto_c_req=params[:auto_c_req]
            auto_c_req=params[:auto_c_req]
      results=Company.labels_for_autocomplete auto_c_req
            results=Company.labels_for_autocomplete auto_c_req
      render :json => results.to_json
            render :json => results.to_json
      end
        end
    end
    end
    render :text => "Error"
    render :text => "Error"
  end
end
 
</pre>
This example renders as JSON, and accepts only POST XHR requests.
 
* This example renders as JSON, and accepts only POST XHR requests.

Latest revision as of 07:31, 13 June 2008

In any model class

def self.labels_for_autocomplete(auto_c_req)
    connection.select_all("SELECT label FROM companies WHERE LOWER(label) LIKE '#{auto_c_req.downcase}%' ORDER BY label ASC LIMIT 10 ")
end
  • The connection outpass ActiveRecords and does not cast results as Ruby objects.

In the controller

def suggest_entreprises
    if request.xhr?
        if request.post?
            auto_c_req=params[:auto_c_req]
            results=Company.labels_for_autocomplete auto_c_req
            render :json => results.to_json
        end
    end
    render :text => "Error"
end
  • This example renders as JSON, and accepts only POST XHR requests.