発生した事象
フォームヘルパーのemail_fieldにはバリデーションがあります。
email形式でない文字を入力した際に「メールアドレスに「@」を挿入してください~」というような文言が表示されます。
該当コード
<div>
<%= form.label :name, style: "display: block" %>
<%= form.text_field :name %>
</div>
<div>
<%= form.label :email, style: "display: block" %>
<%= form.email_field :email %>
</div>
<div>
<%= form.submit %>
</div>
このときに<%= form.submit %>の部分を以下のbuttonタグに置き換えます。
<div>
<button type="button" onclick="submit()">Create User</button>
</div>
とすると下の写真のようにemail_fieldのバリデーションが効きません、、
原因
原因としましてはonclick="submit()"でした。
onclick="submit()"を使用すると、フォームヘルパーのバリデーションが効かないみたいでした。
onclick="submit()"だとページリロードが走っているので、バリデーションをスキップしてしまってるのかもしれません。
以下追記
コメントでrequestSubmit()を使用すると行けるのではということで、試してみた結果requestSubmit()だとバリデーションが効きました。
<button type="button" onclick="requestSubmit()">Create User</button>