我在rails上做了一个简单的博客.我有一个Post模型和一个Comment模型.当您创建评论时,如果评论无效,我想显示错误.我该怎么办?
模特邮报:
#/models/post.rb
class Post < ActiveRecord::Base
has_many :comments
validates :title, :content, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
型号评论:
#/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :post
validates :name, :comment, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
评论控制器
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment])
redirect_to post_path(@post)
end
end
Run Code Online (Sandbox Code Playgroud)
查看评论表:
<%= form_for([@post, @post.comments.build]) do |f| %>
<% if @comment.errors.any? %>
error!
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label …Run Code Online (Sandbox Code Playgroud) 我有一个在模块中定义的类.
module Mod
class Zed
include DataMapper::Resource
end
end
Run Code Online (Sandbox Code Playgroud)
为了测试,我定义了工厂.
#/factories/zed.rb
FactoryGirl.define do
factory :zed do
#code
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我开始测试时,我得到一个错误.
describe 'Zed' do
it "should have ..." do
FactoryGirl.create(:zed)
end
end
Run Code Online (Sandbox Code Playgroud)
错误:
Failure/Error: FactoryGirl.create(:zed)
NameError:
uninitialized constant Zed
Run Code Online (Sandbox Code Playgroud)
如何测试模块中包含的类?谢谢.
我有模特:帖子和用户(设计).我正在测试控制器Post.
describe "If user sign_in" do
before(:all){
@user = Factory(:user)
}
it "should get new" do
sign_in @user
get 'new'
response.should be_success
response.should render_template('posts/new')
end
it "should create post" do
sign_in @user
post 'create', :post => Factory(:post)
response.should redirect_to(post_path(:post))
end
end
Run Code Online (Sandbox Code Playgroud)
但第二次测试失败了:
失败/错误:发布'创建',:发布=>工厂(:发布)ActiveRecord :: RecordInvalid:验证失败:已收到电子邮件,已收到电子邮件,已取得用户名
我该如何解决?