小编Mik*_*ike的帖子

将变量从控制器传递到视图

我在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)

查看评论表:

/views/comments/_form.html.erb

<%= 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)

controller ruby-on-rails models

9
推荐指数
1
解决办法
1万
查看次数

FactoryGirl麻烦

我有一个在模块中定义的类.

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)

如何测试模块中包含的类?谢谢.

ruby testing rspec factory-bot

6
推荐指数
1
解决办法
439
查看次数

使用RSpec,Devise,Factory Girl测试控制器

我有模特:帖子和用户(设计).我正在测试控制器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:验证失败:已收到电子邮件,已收到电子邮件,已取得用户名

我该如何解决?

testing controller rspec ruby-on-rails factory-bot

5
推荐指数
2
解决办法
4691
查看次数

标签 统计

controller ×2

factory-bot ×2

rspec ×2

ruby-on-rails ×2

testing ×2

models ×1

ruby ×1