【问题标题】:Ruby on Rails, dont create entry to model if user input is blankRuby on Rails,如果用户输入为空,则不要创建模型条目
【发布时间】:2013-06-16 01:34:33
【问题描述】:

如果用户输入为空白,Rails 是否可能不保存条目,并且当用户单击条目键时它不会重定向到索引站点而是跳到下一个输入?在这里我有一个简单的表格,所以也许有人可以告诉我他会怎么做!提前致谢!

%= form_for(@patient) do |f| %>


<div class="field">
<%= f.label :vorname %><br />
<%= f.text_field :vorname %>
</div>
<div class="field">
<%= f.label :nachnahme %><br />
<%= f.text_field :nachnahme %>
</div>
<div class="field">
<%= f.label :alter %><br />
<%= f.date_select :alter %>
</div>
<div class="field">
<%= f.label :ort %><br />
<%= f.text_field :ort %>
 </div>
 <div class="field">
<%= f.label :strasse %><br />
<%= f.text_field :strasse %>
</div>
<div class="field">
<%= f.label :telefon %><br />
<%= f.text_field :telefon %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

【问题讨论】:

  • 当然,如果您不验证存在时的输入,这是可能的
  • 我是 Rails 的初学者,你会怎么做?
  • 当用户按下 Enter 键时,您希望焦点转到下一个字段吗?您可以使用 jQuery:stackoverflow.com/questions/4649604/…。这是 Web 表单界面问题,而不是 Rails 问题。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

如果我明白……你想:

1 - 如果用户用鼠标单击创建按钮并且有空白信息,则阻止用户创建他的帐户?

2 - 如果他单击键盘的输入按钮并且有空白字段,他会跳转到下一个输入而不尝试保存表单?

对于第一个答案,您可以像这样在模型中使用验证:

# force user to fill all inputs in your form
validates :vorname, :nachnahme, :ort ...... ,  :presence=> true

对于第二个答案,您可以使用 javascript(我在这里使用 jquery)来防止“输入关键字”提交数据,并跳转到下一个输入:

$(document).ready(function(){

   var id_of_element_have_focus;
   var valid;

   $("form").submit(function(){

      id_of_element_have_focus = $("*:focus").attr("id");

      valid = true;

      $(":text, :file, :checkbox, select, textarea").each(function() {

         if($(this).val() === ""){

           valid = false;


            $("#" + id_of_element_have_focus).next().focus();

         }

      });


      return valid;

   });

});

【讨论】:

    【解决方案2】:

    如果您希望某些与数据库相关的列(表单由form_for 助手生成)肯定具有价值,而不是在Patient 模型中:

    validates :vorname, :nachnahme, :presence=> true
    

    此外,如果您愿意,您可以验证记录的长度、唯一性(使用 Rails 默认验证器)并编写自己的。

    【讨论】:

    • 我想你误会了我,我想要的是,当输入为空白时,他只是跳转到下一个输入,而当用户点击创建时,它不应该创建空白列!
    • 如果我没听错,这是不可能的。如果您的 Patien 有表、它的实例或列中有一些数据,或者列为空,但每个实例的记录不能包含不同数量的列。
    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2015-09-19
    相关资源
    最近更新 更多