我有两个模型:project和todo。项目有许多待办事项。
所以我想创建一个表单,从组合框中选择项目类别,然后我添加一个待办事项。
例如: 我有以下类别:家庭,工作,学习。
在组合框中的形式中,我选择“研究”,然后在文本字段中拼出一个类似“做星期一的作业”的待办事项'然后按提交按钮。
project.rb
class Project < ActiveRecord::Base
has_many :todos
end
todo.rb
class Todo < ActiveRecord::Base
belongs_to :project
end
我的数据架构:
create_table "projects", force: :cascade do |t|
t.string "title"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "todos", force: :cascade do |t|
t.string "text"
t.boolean "isCompleted"
t.integer "project_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
_form.html.erb
<%= form_for @project do |f| %>
<div class="form_control">
<%= f.select :title, options_for_select([["Work", "w"],
["Family", "f"],
["Study", "f"],
["TheRest", "t"]]) %>
</div>
<div class="form_control">
*** HERE I NEED TO FIGURE OUT HOW TO ADD SOME DATA TO todo.text ***
</div>
<div class="form_control">
<%= f.submit 'Add' %>
</div>
<% end %>
这就是我用他们的待办事项展示所有项目的方式:
<% @projects.each do |project| %>
<h2> <%= project.title %> </h2>
<% project.todos.all.each do |todo| %>
<p><%= todo.text %> <%= check_box('tag', todo.__id__, {checked: todo.isCompleted}) %></p>
<% end %>
<% end %>
答案 0 :(得分:1)
在你的待办事项表格中,你可以有一个选择框来选择待办事项所属的项目:
# todos/_todo_form.html.erb
<%= select_tag "project_id", options_for_select(Project.pluck(:title, :id)) %>
在你的todos_controller create
动作中:
def create
@project = Project.find(params[:project_id])
@todo = @project.todos.new(todo_params)
if @todo.save
# success
else
# error
end
end
最后,允许project_id
中的todo_params
:
def todo_params
params.require(:todo).permit(:text, :project_id) # add any other attributes you want
end