为铁轨上的红宝石提供新的工具。我有个问题。是否可以将验证表单放入控制器中。我得知每个验证都是在模型中设置的,而不是在控制器中设置的。
我做了这样简单的表格
<%= form_for :post, url: email_path do |f| %>
<dl class="cf">
<dt class="required">Nama</dt>
<dd><%= f.text_field(:name, {:class => 'input_text full'}) %></dd>
</dl>
<dl class="cf">
<dt class="required">nama Perusahaan</dt>
<dd><%= f.text_field(:company, {:class => 'input_text full'}) %></dd>
</dl>
<dl class="cf">
<dt class="required">nomor telepon</dt>
<dd><%= f.text_field(:tel, {:class => 'input_text tel'}) %></dd>
</dl>
<dl class="cf">
<dt class="required">alamat email</dt>
<dd><%= f.text_field(:email, {:class => 'input_text email'}) %></dd>
</dl>
<dl class="cf">
<dt class="">pertanyaan / komentar</dt>
<dd><%= f.text_area(:commant, {:class => 'textarea'}) %></dd>
</dl>
<ul class="form_btn cf">
<li class="submit"><%= f.submit(t('.ultra_tech_form_title').html_safe) %></li>
</ul>
<% end %>
显示器是这个
但是如果必填(*)为空,则会显示为
此表格直接发送电子邮件。所以我需要设置验证。我该如何设置。
答案 0 :(得分:2)
您没有将验证放入控制器中,而是将验证放入模型中。我建议您阅读this guide。您的代码应如下所示:
post.rb
validates :name, :email, presence: true
此外,如果您使用simple_form gem,则默认情况下,您会在必填字段中获得那些*
符号。您需要做的就是将验证规则添加到模型的属性中。
如果要在创建帖子后自动发送电子邮件,建议您阅读this guide和this guide。基本上,您需要注意的是将创建帖子的过程与发送电子邮件的过程分开,因此,我建议您做的是创建一个将在后台发送电子邮件的作业。综上所述,首先您要验证post
模型,并在其有效时运行一个后台作业,该作业将发送一封电子邮件。我希望这对您有意义。
答案 1 :(得分:0)
您可以在模型中创建验证,然后在控制器中定义错误的原因,然后在视图中呈现错误。
例如,在您的模型中,执行以下操作:
validates :name, presence: true
在控制器中,将错误消息发送至:
@error = @post.errors.full_message
在视图中,您可以执行以下操作:
<% if !@error.nil? %>
<span> <%= @error. %> </span>
<% end %>