如何使用Ruby Form助手制作text_area文本

时间:2015-02-23 17:18:24

标签: ruby-on-rails ruby simple-form

我有以下simple_form_for使用 MailForm 发送电子邮件(不会在数据库中存储任何内容)

  <div class="small-10 small-offset-1 medium-6 medium-offset-3 large-6 large-offset-3 columns">
    <%= simple_form_for @contact, :html => {:class => 'form-horizontal'} do |f| %>
        <%= f.label :Nombre %>
        <%= f.text_field :name, :required => true, :value => 'Administrador', :readonly => true %>
        <%= f.label :Correo_electrónico %>
        <%= f.email_field :email, :required => true, :value => @pass_email, :readonly => true %>
        <%= f.label :Mensaje %>
        <%= f.text_area :message, :as => :text, :required => true, cols: 20, rows: 10 %>
        <div class="hidden">
          <%= f.input :nickname, :hint => 'Leave this field blank!' %>
        </div>

        </br>
        <%= f.button :submit, 'Enviar', :class => "button [radius round]" %>
    <% end %>
    <%= button_to 'Volver', manager_admin_menu_path, :method => :get, :class => 'button success [radius round]' %>
  </div>

正如您所看到的,text_area有一个required => true但是当我测试表单时,它允许在text_area中提交空文本

如何使用rails / ruby​​验证text_area中是否输入了任何文本(基本上将text_area作为必填字段,我知道我可以用javascript做这个但是想学习正确的Ruby / Rails方式)< / p>

更新

我的模型继承自MailForm,并且定义如下

class Contact < MailForm::Base
  attribute :name,      :validate => true
  attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
  attribute :message
  attribute :nickname,  :captcha  => true

end

我还想了解为什么必需选项的行为不符合预期

texarea正在像这样呈现

<textarea cols="20" id="contact_message" name="contact[message]" required="required" rows="10">
</textarea>

显然没有空格但有换行符,这会影响吗?

1 个答案:

答案 0 :(得分:3)

这是Rails中验证的概念。验证意味着在将字段保存到数据库之前确保字段满足某些要求,您可以验证presence,如果字段不为空,则只提交表单,您可以验证uniqueness如果字段是唯一的(数据库中已不存在),则仅提交表单,依此类推。

因此,为了您的关注,您有一个Contact模型,您应该在contact.rb文件中添加:

class Contact <  ActiveRecord::Base 
  validates :message, presence: true // add this line
end

现在当您提交带有空消息字段的表单时,它会抱怨并给您一个错误。

请在此处阅读http://guides.rubyonrails.org/active_record_validations.html

的更多内容