我在Rails中遇到一个非常简单的流程时遇到了麻烦。我希望在某些文本中有一个用户类型,然后调用后端,然后该后端将向另一个域中的RESTful API发出GET请求。然后,我想使用此信息显示搜索结果,但由于某种原因,我无法访问我设置的变量。
houses_controller.rb
<%= form_tag("/houses/search", method: "get", remote: true) do %>
<%= label_tag(:query, "Search for:") %>
<%= text_field_tag(:query) %>
<%= submit_tag("Search") %>
<% end %>
<% if(@search_results.nil?) %>
<p>nil....</p>
<% else %>
<% @search_results.each do |res| %>
<p>
"result..."
</p>
<% end %>
<% end %>
index.html.erb
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root :to => "houses#index"
get "/houses/search" => "houses#search"
end
的routes.rb
remote: true
我从根页面开始,我在form_tag中使用了"No template found for HousesController#search, rendering head :no_content"
,因为我相信这是人们做AJAX请求的方式吗?我是否完全关闭使用rails以这种方式执行ajax请求?我更喜欢使用jquery,但似乎这是Rails的方法。
我也尝试过使用search.html.erb,因为我在调试时看到了一条消息@search_results
,但即使我添加了该文件,它也没有什么区别,因为它仍在渲染索引。 html.erb文件并完全忽略search.html.erb文件。
我还尝试在索引操作中设置std::istringstream
。它可以工作,如果我在那里设置它但我不想要我在那里设置的静态值,我想要在我调用'search'动作时生成的值。
答案 0 :(得分:0)
如果你使用remote:true,你应该创建一个search.js.erb而不是html.erb。您可以使用respond_to块并指定js调用的行为。