失敗することがわかっているフォームにデータを入力すると、失敗しません。以下の私のモデルに従って、データはaz、AZ、0-9、および空白の任意の組み合わせである必要があり、フォームに )( &^%^& (*&%^&** または空のフィールドを送信しても、エラーが発生することが予想されますが、この場合はありません。
モデルの重要な部分は次のとおりです。
class Numerology
include ActiveModel::Model
attr_accessor :phrase
VALID_PHRASE_REGEX = /\A[a-zA-Z0-9\s]+\z/
validates :phrase, presence: true, length: { minimum: 1 },
format: { with: VALID_PHRASE_REGEX }
これがコントローラーです...私がやりたいことは、フォームに間違った入力をしたときに生成されたエラーとともにインデックス(フォームのあるページ)に戻ることです。ここで正しい方法で行っているかどうかはわかりませんが、エラーがまったく生成されていないように見えるので、これは二次的な質問かもしれないと思います (もちろん @numerology.errors.any? は false になります) .
class NumerologiesController < ApplicationController
before_filter :authenticate_user!
respond_to :html
def index
@numerology = Numerology.new
end
def create
@numerology = Numerology.new(params[:numerology])
if @numerology.errors.any?
render :index
else
@numresults = Numerology.analysis(params[:numerology][:phrase])
end
end
end
そして最後に、ここにビューがあります。最初はインデックス、次に作成です。
インデックスページ:
<div class="center jumbotron">
<h1>Numerology Analysis Module</h1>
<br>
<%= bootstrap_form_for(@numerology, layout: :horizontal, label_col: "col-sm-4", control_col: "col-sm-6") do |f| %>
<p> Enter word or phrase to be analyzed in the field below (Required).</p>
<%= @numerology.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
<%= f.text_field :phrase, label: "Word or Phrase: " %>
<br><br>
<%= f.submit "Perform Numerological Analysis" %>
<% end %>
<br><br>
<%= image_tag("SMILE.jpg", alt: "Smiley Face") %>
</div>
作成ページ:
<div class="center jumbotron">
<h1>Numerological Analysis Report</h1>
<div class="numreport">
<table class="numtable">
<% @numresults.each do |line| %>
<% if !line.nil? %>
<tr>
<td><%= "#{line}" %></td>
</tr>
<% end %>
<% end -%>
</table>
</div>
<%= link_to "Perform Another Numerological Analysis - Click Here", numerologies_path %>
<br><br><br>
<%= image_tag("SMILE.jpg", alt: "Smiley Face") %>
</div>
だから、誰かが私がここで間違っていることを見ていますか? 試してみるべき他のことを提案しますか?ありがとう!