【发布时间】:2018-03-13 21:39:50
【问题描述】:
我正在使用 Rails 5.1 创建一个简单的搜索,该搜索使用表单中的单个文本字段,从 SQLITE3 DB 获取数据并在新 HTML 页面上的表中返回数据。搜索表单是一个渲染表单,它将搜索的值传递给控制器
index.html.erb
<%= render 'search', foo: @foo %>
_search.html.erb
<div>
<%= form_tag(search_home_index_path, :method => 'get', id: 'search_form') do %>
<%= text_field_tag :search, params[:search], id: 'search_field', placeholder: "Search", :required => 'required'%>
<%= submit_tag("Search", :class => "button", :name => nil) %>
<% end %>
</div>
application_record.rb
def self.search(search)
where("(foo) LIKE ?", "%#{search}%")
end
home_controller.rb
def search
if params[:search]
@foo = Foo.search(params[:search]).order("id ASC")
else
@foo = Foo.all.order("id ASC")
end
end
搜索工作正常并返回值。但是,(我相信这是因为我在多个页面上呈现相同的表单),当搜索返回时,text_field_tag 值保留在原始页面上输入的搜索条件,并在新页面的 text_field_tag 中填充相同的值。我尝试使用 JavaScript 来清除 text_field_tag
document.getElementById('search_field').value='';
作为函数中的
<body onload...
但它不起作用 - text_field_tag 保留该值。我也尝试过使用
document.getElementById('search_form').reset();
但这最终会在我的搜索变量中发送一个空白值并返回数据库中的所有项目。
我已经看到一些关于将字段值的代码放在 Coffee 脚本中的参考,但我不确定如何实现它(我已经编写 Ruby 代码总共大约 2 个月了)。
任何建议将不胜感激!
【问题讨论】:
标签: javascript ruby-on-rails ruby html