機能を作成したい1)ユーザーがフォームに名前と名前を入力します2)フォームが送信されます3)ショービューが読み込まれ、テキストの特定の部分がパラメーターに置き換えられます4)フォームが無効な場合、つまり、名の存在が真ではない場合、エラーが表示されます
手順1〜3の機能を作成できました。人がフォームに詳細を入力すると、別のビューに転送されます。ここで、フォームの特定の部分を検証します。
この情報はいずれもデータベースに保存されていませんが、モデルを使用してフォームを検証できたことを覚えています。
私がやろうとしたのは、モデルを作成し、attr_accessorを追加し、それに検証を加えることです。フォームがPOSTすると、createアクション内に変数が作成され、if/thanステートメントを実行できます。
しかし、これを試したところ、エラーが発生しました。
NoMethodError in ContentController#create
undefined method `build' for Content(id: integer, created_at: datetime, updated_at: datetime):Class
私のContent#createは次のようになります
def create
@content = Content.build(:params)
if @content.valid?
render 'content/show'
else
render 'content/new'
end
end
これは次の形式のビューです:
<%= form_tag("/content", :method => "post", :id => "form" ) do %>
<h4>The Doctor's Name</h2>
<div class="row">
<div class="span4">
<%= label_tag(:first_name, "First Name") %>
<%= text_field_tag :first_name, nil, placeholder: "ex: James" %>
</div>
<div class="span4">
<%= label_tag(:last_name, "Last Name") %>
<%= text_field_tag :last_name, nil, placeholder: "ex: Bond" %>
</div>
<div class="span4">
<%= label_tag(:full_name, "Full Name") %>
<%= text_field_tag :full_name, nil, placeholder: "ex: James Bond" %>
</div>
</div><!--form_item row-->
<div class="form_explanation">
<div class="alert alert-block">
Enter's The Doctor's First Name, Last Name, And Than The Full Name. Do NOT include "Dr."
</div>
</div>
<div class="pagination-centered">
<%= submit_tag( raw("Generate The Content!"), :class => "btn btn-large btn-primary", :style => "font-weight:bold") %>
</div>
<% end %>
これは私のモデルがどのように見えるかです:
class Content < ActiveRecord::Base
attr_accessible :first_name, :last_name, :full_name
attr_accessor :first_name
attr_accessor :last_name
attr_accessor :full_name
validates :first_name, presence: true
validates :last_name, presence: true
validates :full_name, presence: true
end
私はまったく正しい方向に進んでいますか?