2012-12-07 28 views
8

Tôi đã có một nhiệm vụ để chọn tìm kiếm các sinh viên bắt đầu với giá trị param và thành phố trong giá trị đã chọn. Làm thế nào tôi có thể đặt trong ruby ​​trên đường ray? tôi đã làm như thế này nhưng điều này không làm việc khiểnToán tử giống như trong ruby ​​trên đường ray

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 

Trả lời

10

Hãy thử:

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

Đây là một giải pháp khá bẩn thỉu, nhưng AREL thuần túy không thể xử lý trường hợp này theo cách bạn mong muốn. Bạn có thể muốn thử đá quý Sqeel.

+0

cảm ơn bạn đã hỗ trợ của bạn .. – Niths

+0

Bạn có thể giúp tôi viết nếu tuyên bố cho cityid == 0 – Niths

2

Hãy thử

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

Điều này sẽ đảm bảo tên * kết thúc * với giá trị, không bắt đầu bằng giá trị đó. – sevenseacat

+0

Cảm ơn tôi đã trả lời chỉnh sửa. –

0

có một lỗi trong phương pháp của bạn, nó phải là như thế này

@studentname = Student.where("name = :name1 AND city = :cityId1", 
    {:name1 => params[:name], :cityId1 => params[:cityId]}) 
Các vấn đề liên quan