【问题标题】:Clearing Search text_field_tag In Rendered Form on Submit提交时清除呈现表单中的搜索 text_field_tag
【发布时间】: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


    【解决方案1】:

    实际上,您是在表单中设置此值的人。你可以把它设置为 nil,像这样;

    <%= text_field_tag :search, nil, id: 'search_field', placeholder: "Search", :required => 'required'%>
    

    text_field_tag 的文档可以在here 找到。

    【讨论】:

    • 我现在要去撞墙了,因为我认为这比以前更难......
    • 对不起。以为我做到了。谢谢。
    • @Diane,很抱歉你的第一条评论反应迟了,希望你没有撞墙,这发生在我们最好的人身上,不要放弃,继续面对有问题:)
    猜你喜欢
    • 2016-11-08
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多