我的班级贡献属于用户。我有一个新的贡献表格,其中包括一个搜索字段,供该贡献所属的用户使用 -
/ ptributions/new.html.erb中的-
<%= text_field_tag :search, params[:search], id: "search" %>
<%= link_to "Search", search_contributions_path, id: "search_submit" %>
在application.js.erb
中$(document).on("click", "a#search_submit", function(){
$.ajax({
url: $(this).attr("href"),
data: {query: $("#search").val() },
success: function(data) {
var user = $.parseJSON(json);
}
});
});
并在contribution_controller.rb中 -
def search
@users = User.search(params[:search])
render :users => @users.to_json
end
我的控制器正在尝试渲染页面 - 如何让它返回我想要的视图结果?
答案 0 :(得分:1)
render json: { users: @users.to_json }
答案 1 :(得分:0)
respond_to
不会解决这个问题吗?像
respond_to :html, :xml, :json
取决于你想要“回应”的格式,显然。
这是来源http://apidock.com/rails/ActionController/MimeResponds/ClassMethods/respond_to
答案 2 :(得分:0)
您必须在控制器中使用以下内容:
respond_to :html, :xml, :json
你可以按以下方式返回json:
respond_to do |format|
format.json { render json: @users.result() }
end
或者如下:
render json: { :users => @users.result().to_json }
我认为您使用ransak进行搜索,因此您需要使用@users.result().to_json
代替@users.to_json
答案 3 :(得分:0)
该问题与json无关,您的问题与javascript更改您的ajax调用有关:
$(document).on("click", "a#search_submit", function(e){
e.preventDefault();
$.ajax({
url: $(this).attr("href"),
data: {query: $("#search").val() },
success: function(data) {
var user = $.parseJSON(json);
}
});
});