2015-09-22 27 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

非常感謝:) –

相關問題