我想要一个“待办事项列表”的中创建的项目清单,但是,我不知道如果我有嵌套属性正确地这样做。 我想用一个嵌套的属性是因为那里将是项目的大名单的权利的尝试,它将基于ID的正确的“待办事项列表”的关联。
的表格看起来可能会被填充记录时像例
一切都表
id list
1 grocery shopping
2 health insurance
项目表
id todo_id name
1 1 buy milk
2 1 buy cereal
3 2 Blue Shield
4 2 Healthnet
5 1 buy cherries
虽然,下面我尝试,我的应用程序没有保存任何数据到Item
数据库。
所有控制器
class TodoController < ApplicationController
def new
@todo = Todo.new
@todo.items.build
end
end
所有型号
class Todo < ActiveRecord::Base
belongs_to :user
has_many :items
accepts_nested_attributes_for :items
end
产品型号
class Item < ActiveRecord::Base
belongs_to :todo
end
查看所有
<%= simple_form_for(@todo) do |f| %>
<%= f.input :list %>
<%= f.simple_fields_for :items do |g| %>
<%= g.input :name %>
<% end%>
<%= f.button :submit %>
<% end %>
我能有name
秀场在我的观点,但是当我保存它,它不保存到数据库中,但是,我能够在列表保存到数据库中,然后当我尝试编辑备案, name
字段显示不出来了才能够进行编辑。
编辑:显示创建方法
这是我目前在待办事项控制器创建方法
def create
@todo = Todo.new(todo_params)
respond_to do |format|
if @todo.save
format.html { redirect_to @todo, notice: 'Todo was successfully created.' }
format.json { render :show, status: :created, location: @todo }
else
format.html { render :new }
format.json { render json: @todo.errors, status: :unprocessable_entity }
end
end
end
不知道如果编辑需要有一些东西,但我只有这个距离产生的Todo的支架
def edit
end
编辑2个显示todo_params
def todo_params
params.require(:todo).permit(:user_id, :list)
end