10

我的任务是选择搜索那些名字以参数值和所选值中的城市开头的学生。如何在 ruby​​ on rails 中设置?我确实喜欢这个,但这不是工作控制器

 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
4

3 回答 3

13

尝试:

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

这是一个相当肮脏的解决方案,但纯 ARel 无法按照您希望的方式处理这种情况。您可能想尝试Sqeel gem。

于 2012-12-07T07:47:45.100 回答
3

尝试

@studentname = Student.where("name LIKE ? AND city = ?", "#{params[:name]}%", params[:cityId])
于 2012-12-07T07:43:16.793 回答
-1

你的方法有错误,应该是这样的

  @studentname = Student.where("name = :name1 AND city = :cityId1",
     {:name1 => params[:name], :cityId1 => params[:cityId]})
于 2012-12-07T07:43:20.707 回答