在rails应用程序中,我必须控制(在提交操作上)的搜索字段,如果它是空白的。 这个没有连接到一个表来注册一些数据:
library(dplyr)
test %>% left_join(statecode, by = "StateID") %>% select(-StateID)
ID State
1 1 Mass
2 2 NY
3 3 Mass
我已经尝试在我的控制器中定义一个动作,以检查我传递的参数的值:
<%= form_tag products_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search]%>
<%= submit_tag "Ricerca" %>
<% end %>
通过Rails验证我的字段是否有任何想法?
答案 0 :(得分:2)
您可以为客户端使用HTML5验证(您仍应进行服务器端检查):
<%= form_tag products_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search], required: true %>
<%= submit_tag "Ricerca" %>
<% end %>
:required => true
将要求搜索字段中包含某些内容。
答案 1 :(得分:2)
将ActiveModel用于带有验证的无表格模型。
模特:
class ExampleSearch
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :input
validates_presence_of :input
validates_length_of :input, :maximum => 500
end
和你的表格:
<%= form_for ExampleSearch.new(), :url=>posts_path, :method=>:get, :validate=>true do |f| %>
<p>
<%= f.label :input %><br />
<%= f.text_field :input, required: true %>
</p>
<p><%= f.submit "Search" %></p>
<% end %>
为了获得良好的用户体验,请使用gem 'client_side_validations'
ActiveModel的信息:
答案 2 :(得分:1)
您可以验证服务器端和客户端。你总是想要服务器端,因为可以在不使用表单的情况下访问url,你需要一种方法来处理它。客户端将使用户体验更好,因为他们不需要重新加载页面以获得反馈。
对于服务器端,它就像if params[:search].blank?
一样简单,这将检查= nil
和= ""
。
对于客户端,有两种主要方式。 Javascript和HTML 5.使用HTML 5,您可以将:required => true
添加到表单元素中,这就是您所需要的。
使用javascript,或者在这种情况下,JQuery可以像这样工作
$('form').submit(function() { //When a form is submitted...
$('input').each(function() { //Check each input...
if ($(this).val() == "") { //To see if it is empty...
alert("Missing field");//Say that it is
return false; //Don't submit the form
}
});
return; //If we made it this far, all is well, submit the form
});