Jer*_*y B 4 jquery json ruby-on-rails ruby-on-rails-3 jquery-select2
我试图在我的Rails应用程序中使用select2,但是无法在我的视图中显示结果。我在Chrome浏览器控制台中看到了正确的json,但无法在下拉列表中显示结果...
请你帮助我好吗 ?
谢谢 :
控制器:
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('||', ' ')).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
Run Code Online (Sandbox Code Playgroud)
我的Java语言:
$("#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"
});
Run Code Online (Sandbox Code Playgroud)
我不知道怎么了,谢谢你的帮助
我刚刚编辑了控制器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('||', ' ')).op('||',last_name)) =~ my{"%#{params[:term]}%"}) | ( ((last_name.op('||', ' ')).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
Run Code Online (Sandbox Code Playgroud)
在JS脚本中:
$(document).ready(function() {
$("#teens_select2").select2({
placeholder: "Search for a teen",
minimumInputLength: 1,
ajax: {
url: "/friends.json",
dataType: 'json',
quietMillis: 300,
data: function (search, page) {
return {
term: search,
page_limit: 10,
page: page,
};
},
results: function (data, 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
});
});
Run Code Online (Sandbox Code Playgroud)
同样,在加载脚本之前,像这样配置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);
}
Run Code Online (Sandbox Code Playgroud)
并在视图中:
<input type ="hidden" id="teens_select2"></input>
Run Code Online (Sandbox Code Playgroud)
我真的希望它会有用。
| 归档时间: |
|
| 查看次数: |
7750 次 |
| 最近记录: |