使用Ruby on Rails保存时遇到问题

时间:2016-03-25 21:18:03

标签: ruby-on-rails ruby ruby-on-rails-3 rspec capybara

我正在尝试使用Rails创建一个待办事项列表,首先我已经制作了List和它的规格,一切顺利,但后来我开始制作它的项目,但它很简单,不保存它的内容,它存储一个空字符串,它既不在表单上也不在规范上工作。当我尝试使用Rails控制台进行保存时,一切正常。

这是我从Rspec收到的消息:

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

以上是......

的代码
#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 %>

当它出现在浏览器上时,它只显示列表符号但不显示内容。

抱歉太久了

1 个答案:

答案 0 :(得分:2)

todo_item_parems更改为

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

看看Rails strong parameters