Hãy nói rằng bạn có một hành động điều khiển cho tạo, như sau:
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
format.xml { render :xml => @post, :status => :created, :location => @post }
else
format.html { render :action => "new" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end
Và đây là tiêu chuẩn Scaffold 'viết # mới' xem
<h1>New post</h1>
<% form_for(@post) do |f| %>
<%= f.error_messages %>
...... # just to show, it's bigger....
Bây giờ, nếu một Bài đăng được tạo thành công mà bạn muốn được chuyển hướng, nhưng nếu nó không thành công, chúng tôi chỉ muốn hiển thị lại hành động MỚI. Bài kiểm tra dưới đây sử dụng những gì người đàn ông chính của chúng tôi DJTripleThreat nói sử dụng assert_template
.
test "should not create post and instead render new" do
post :create, :post => { }
assert_template :new
#added to doubly verify
assert_tag :tag => "h1", :child => /New post/
end
Nếu điều đó vẫn không nổi thuyền của bạn, tôi thậm chí muốn thêm một assert_tag để đảm bảo một số quan điểm được sắp tới, vì vậy bạn có biết rằng nó sẽ được hiển thị/trả lại cho người dùng cuối.
Hy vọng điều này sẽ hữu ích.
Thử nghiệm này đã được gọi. Một hành động có thể hiển thị bất kỳ chế độ xem nào mà nó chọn hoặc thậm chí chuyển hướng. – jwadsack