jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 使用Rails和JSON选择2大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在我的rails应用程序中使用select2,但无法在我的视图中显示结果.我看到正确的json进入chrome控制台,但无法在下拉列表中显示结果…

请你帮助我好吗 ?

谢谢 :

控制器:

def friends
  if params[:term]
    @users = User.where{ ( (first_name =~ my{"%#{params[:term]}%"}) | (last_name =~ my{"%#{params[:term]}%"}) | ( ((first_name.op('||',' ')).op('||',last_name)) =~ my{"%#{params[:term]}%"}) | ( ((last_name.op('||',first_name)) =~ my{"%#{params[:term]}%"}) ) & ( adult==false ) }
  end
  respond_to do |format|  
    format.html
    format.json { render :json =>{:results => @users.to_json(only: [:id,:first_name,:last_name]) }}
  end
end

我的Javascript:

$("#teen_search").select2({
  placeholder: "Search for a teen",minimumInputLength: 2,ajax: {
    url: "/friends.json",dataType:'json',data: function (search,page) {
      return {
        term: search,// search term
        page_limit: 10,};
    },results: function (data,page) {
      return data;
    }
  },dropdownCssClass: "bigdrop"
});

我不知道出了什么问题,谢谢你的帮助

我刚刚编辑了控制器render_to json和js中的结果来修复chrome控制台中的错误,我知道我很接近但仍然无法让我的用户first_name和last_name显示在字段中…

解决方法

所以我最终这样做了:

User_Controller:

def friends
if params[:term]
    @users = User.where{ ( (first_name =~ my{"%#{params[:term]}%"}) | (last_name =~ my{"%#{params[:term]}%"}) | ( ((first_name.op('||',first_name)) =~ my{"%#{params[:term]}%"}) ) & ( adult==false ) }.select("id,first_name,last_name,avatar,uid")
    @user = @users.paginate(:page => params[:page],:per_page => params[:page_limit])
end
respond_to do |format|  
    format.html
    format.json { 
      render :json => {
        :users => @user,:total => @users.count,:links => { :self => @user.current_page,:next => @user.next_page}
    } 
  }
end
end

在JS脚本中:

$(document).ready(function() {
    $("#teens_select2").select2({
        placeholder: "Search for a teen",minimumInputLength: 1,ajax: {
            url: "/friends.json",dataType: 'json',quietMillis: 300,page) {
                return {
                    term: search,page_limit: 10,page: page,};
            },page) {
            var more = (page * 10) < data.total;                
              return {results: data.users,more: more};
            }
        },formatResult: movieFormatResult,formatSelection: movieFormatSelection,dropdownCssClass: "bigdrop" // apply css that makes the dropdown taller
    });
});

在加载脚本之前,formatResult和formatSelection也是这样配置的:

function movieFormatResult(user) {
    var markup = "<table class='movie-result'><tr>";
    if ( user.uid !== null) {
         markup += "<td class='movie-image'><img src='" + user.avatar + "'/></td>";
    }
    else if (user.uid == null) {
        var gravatar = user.avatar + 40
         markup += "<td class='movie-image'><img src='" + gravatar + "'/></td>";
     }

    markup += "<td class='movie-info'><div class='movie-title'>" + user.first_name +' '+ user.last_name + "</div>";

    markup += "</td></tr></table>"
    return markup;
}

function movieFormatSelection(user) {
    return (user.first_name + ' ' + user.last_name);
}

在视图中:

<input type ="hidden" id="teens_select2"></input>

我真的希望它有用.

大佬总结

以上是大佬教程为你收集整理的jquery – 使用Rails和JSON选择2全部内容,希望文章能够帮你解决jquery – 使用Rails和JSON选择2所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:json