Ruby on rails Rails—将json中的搜索结果呈现为表单
我的班级贡献属于用户。我有一个新贡献的表单,其中包括该贡献将属于的用户的搜索字段- 在/contributions/new.html.erb中-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
<%= 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”}
-这真的很奇怪。