2015-09-22 19 views
0

我刚开此错误:轨测试rspec的水豚的ActionController :: ParameterMissing:参数是丢失或为空值:项目

 Failure/Error: click_link 'New Project' 
     ActionController::ParameterMissing: 
      param is missing or the value is empty: project 
# ./app/controllers/projects_controller.rb:31:in `project_params' 
    # ./app/controllers/projects_controller.rb:6:in `new' 
    # ./spec/features/creating_projects_spec.rb:5:in `block (2 levels) in <top (required)>' 

我不知道为什么,所以我可能失去了一些东西:

Projects_controller.rb

class ProjectsController < ApplicationController 
    def index 
    end 

    def new 
     @project = Project.new(project_params) 
     @project.save 

    end 

    def create 
     @project = Project.new(project_params) 

     if @project.save 
      flash[:notice] = "Project has been created." 
      redirect_to @project 
     else 
      flash[:alert] = "Project has not been created." 

      render 'new' 
     end 
    end 

    def show 
     @project = Project.find(params[:id]) 
    endjava 8 release date 

    private 

    def project_params 
    params.require(:project).permit(:name, :description) 
    end 
end 

New.html.erb

<h2>Creating Projects</h2> 
<%= form_for(@project) do |f| %> 
<% if @project.errors.any? %> 
<div id="error_explanation"> 
    <h2><%= pluralize(@project.errors.count, "error") %> 
     Project has not been created.:</h2> 

    <ul> 
     <% @project.errors.full_message.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
    </ul> 
</div> 
<% end %> 
<p> 
<%= f.label :name , "Name" %><br /> 
<%= f.text_field :name %> 
</p> 

<p> 
    <%= f.label :description, "Description" %><br /> 
    <%= f.text_field :description %> 
</p> 
<%= f.submit %> 
<% end %> 

Creating_projects_spec.rb

require 'spec_helper' 
    feature 'Creating Projects' do 
    before do 
     visit '/' 
     click_link 'New Project' 
    end 
     scenario "can create a project" do 
     fill_in 'Name', with: 'TextMate 2' 
     fill_in 'Description', with: 'A text-editor for OS X' 
     click_button 'Create Project' 
     expect(page).to have_content('Project has been created.') 
     project = Project.where(name: "TextMate 2").first 
     expect(page.current_url).to eql(project_url(project)) 
     title = "TextMate 2 - Projects - Ticketee" 
     expect(page).to have_title(title) 
    end 
     scenario "can not create a project without a name" do 
     click_button 'Create Project' 
     expect(page).to have_content("Project has not been created.") 
     expect(page).to have_content("Name can't be blank") 
    end 
end 

这是我第二次做同样的事情。我第一次通过它,但不记得我是如何和这一次卡住了。 :(

回答

1

更改类似下面的new方法应该解决您的问题

def new 
    @project = Project.new 
end 
+0

是的,你是对的,但你可以帮我下一个太(故障/错误:click_button“创建项目” 的ActionView: :模板::错误: 错误的参数数量(0表示2) #./app/views/projects/new.html.erb:10:in'block in _app_views_projects_new_html_erb__1587587786504212903_69884042952300' #./app/views/projects/ new.html.erb:3:in'_app_views_projects_new_html_erb__1587587786504212903_69884042952300' #./app/controllers/projects_con troller.rb:18:'create' #./spec/features/creating_projects_spec.rb:18:in ') –

+0

@KristjanTampere'<%@ project.errors .full_message.each do | msg | %>'应该是<%@ project.errors.full_messages.each do | msg | %>' – Pavan

+0

非常感谢:) –

相关问题