2012-12-07 2 views
8

Ich hatte eine Aufgabe zu wählen Suche die Studenten diese Namen beginnen mit param Wert und Stadt im ausgewählten Wert.Wie kann ich in Ruby auf Schienen setzen? ich habe wie diese, aber das funktioniert nicht ControllerSQL Wie Operator in Ruby auf Schienen

def list 

    studentcount=Student.count() 
    puts studentcount 
    @studentname = Student.where("name name1 AND city = :cityId1", 
    {:name1 => params[:name], :cityId1 => params[:cityId]}) 

    puts 'studentname' 
    puts @studentname.inspect 
    @students = Student.limit(params[:jtPageSize]).offset(params[:jtStartIndex]).order(params[:jtSorting]) 

    @jtable = {'Result' => 'OK','Records' => @students.map(&:attributes), :TotalRecordCount => studentcount} 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render :json => @jtable} 
    end 
    end 

Antwort

10

Versuch sein sollte:

@studentname = Student.where("name LIKE :name1 AND city = :cityId1", 
    {:name1 => "#{params[:name]}%", :cityId1 => params[:cityId]}) 

Dies ist eine ziemlich schmutzige Lösung, aber reines ARel kann diesen Fall nicht so behandeln, wie Sie es wünschen. Vielleicht möchten Sie das Sqeel Juwel versuchen.

+0

vielen Dank für Ihre Unterstützung .. – Niths

+0

Können Sie mir helfen, wenn Aussage für die Stadtid == 0 zu schreiben – Niths

2

Versuchen

@studentname = Student.where("name LIKE ? AND city = ?", "#{params[:name]}%", params[:cityId]) 
+0

Dies wird sicherstellen, dass der Name * mit dem Wert * endet, nicht damit beginnt. – sevenseacat

+0

Danke ich bearbeitete Antwort. –

0

gibt es einen Fehler in Ihren Methoden, es ist wie dieses

@studentname = Student.where("name = :name1 AND city = :cityId1", 
    {:name1 => params[:name], :cityId1 => params[:cityId]})