2016-03-25 7 views
1

Ich versuche, eine Todo-Liste mit Rails zu machen, zuerst habe ich die Liste und seine Spezifikationen gemacht, alles ging gut, aber dann habe ich begonnen, es zu machen, aber es einfach nicht speichern, es ist Inhalt, es speichert eine leere Zeichenfolge, es funktioniert weder auf dem Formular noch auf die Spezifikationen. Wenn ich versuche, mit der Rails-Konsole zu speichern, läuft alles gut.Probleme beim Speichern mit Ruby on Rails haben

Dies ist die Botschaft, die ich von Rspec erhalten:

Creating todo items is successful with valid content 
Failure/Error: expect(page).to have_content("Ruby") 
    expected to find text "Ruby" in "" 

Oben ist der Code für ...

#todo_item_controller.rb 

class TodoItemsController < ApplicationController 
    def index 
    @todo_list = TodoList.find{ params[:todo_list_id] } 
    end 

    def new 
    @todo_list = TodoList.find{ params[:todo_list_id] } 
    @todo_item = @todo_list.todo_items.new 
    end 

    def create 
    @todo_list = TodoList.find(params[:todo_list_id]) 
    @todo_item = @todo_list.todo_items.new(todo_item_params) 
    if @todo_list.save 
     flash[:success] = "Added todo list item." 
     redirect_to todo_list_todo_items_path 
    else 
     flash[:error] = "Something went wrong" 
     render action: :new 
    end 
    end 

    private 
    def todo_item_params 
     params[:todo_item].permit{:content} 
    end 
end 

#index.html.erb 

<h1><%= @todo_list.title %></h1> 

<ul class="todo_items"> 
    <% @todo_list.todo_items.each do |todo_item| %> 
    <li><%= todo_item.content %></li> 
    <% end %> 
</ul> 
<p> 
    <%= link_to "New Todo item", new_todo_list_todo_item_path %> 
</p> 

#new.html.erb 

<%= form_for [@todo_list, @todo_item] do |form| %> 
    <%= form.label :content %> 
    <%= form.text_field :content %> 

    <%= form.submit "Save" %> 
<% end %> 

Wenn es zeigt es auf dem Browser nur die Liste Symbol erscheinen, aber keinen Inhalt .

Leider zu lange

Antwort

2

Ändern Sie Ihre todo_item_parems zu

def todo_item_params 
    params.require(:todo_item).permit(:content) 
end 

auf Rails Werfen Sie einen Blick strong parameters.

+0

Es hat funktioniert !! Danke vielmals! – joaomarcuslf