我想创建功能 1) 用户在表单中输入名字、姓氏 2) 表单已提交 3) 显示视图已加载,文本的某些部分被参数替换 4) 如果表单无效,即名字存在不正确,则显示错误
我已经设法为步骤 1-3 创建了功能。当一个人在表单中输入详细信息时,它会转移到不同的视图。现在,我想做的是验证表单的某些部分。
这些信息都没有保存在数据库中,但我记得我可以使用模型来验证表单。
我试图做的是创建一个模型,添加一个 attr_accessor,并对其进行验证。当表单发布时,它会在创建操作中构建一个变量,我可以做一个 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
我在正确的轨道上吗?