Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—将json中的搜索结果呈现为表单_Ruby On Rails_Json_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails—将json中的搜索结果呈现为表单

Ruby on rails Rails—将json中的搜索结果呈现为表单,ruby-on-rails,json,ruby-on-rails-4,Ruby On Rails,Json,Ruby On Rails 4,我的班级贡献属于用户。我有一个新贡献的表单,其中包括该贡献将属于的用户的搜索字段- 在/contributions/new.html.erb中- <%= text_field_tag :search, params[:search], id: "search" %> <%= link_to "Search", search_contributions_path, id: "search_submit" %> 在贡献_controller.rb中- def search

我的班级贡献属于用户。我有一个新贡献的表单,其中包括该贡献将属于的用户的搜索字段-

在/contributions/new.html.erb中-

<%= text_field_tag :search, params[:search], id: "search" %>
<%= link_to "Search", search_contributions_path, id: "search_submit" %>
在贡献_controller.rb中-

def search
    @users = User.search(params[:search])
    render :users => @users.to_json
end
我的控制器正在尝试呈现页面-如何使其将我想要的结果返回到视图?

您可以编写:

    render json: { users: @users.to_json }

一个
的响应不会解决这个问题吗?差不多

respond_to :html, :xml, :json
显然,这取决于您想要“响应”的格式


以下是源代码

您必须在控制器中使用以下内容:

respond_to :html, :xml, :json
您可以按如下方式返回json:

respond_to do |format|
  format.json { render json: @users.result() }
end
render json: { :users => @users.result().to_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

问题与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);
      }
   });
});

我敢肯定是我的javascript错了——在上面添加一行会导致页面显示哈希值{“users”:“null”}——但这是一个改进。我将关闭此文件并重新表述我认为的问题-但感谢您的帮助:)@RADan看看我的答案hi a-我已经做了您建议的更改,但我仍然得到一个路由到/contributions/search,其中只包含以下html-
{“users”:“null”}
-这真的很奇怪。