[英]Creating an associated model along with main model in rails view?
我正在使用以下代碼在視圖中創建一個下拉列表,以將模型與另一個模型相關聯。 這可行,但是我必須預先填充數據庫中的任務。 我希望能夠在項目創建期間創建任務,而不僅僅是選擇已經存在的任務。
<%= f.label :task %>
<%= f.collection_select( :task_id,
Task.all,
:id, :name, {selected: @project.task_id, include_blank: false}) %>
據我了解,我也將必須在控制器中執行此操作,但是我看到的許多代碼已經過時了,我想以Rails 4的方式進行操作。 謝謝!
如果要創建新項目並嘗試創建任務,則需要使用nested model form
( accepts_nested_attributes_for
):
#app/models/Project.rb
def Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks
end
#app/controllers/projects_controller.rb
def new
@project = Project.new
@project.tasks.build #-> do this for as many tasks as you want
end
def create
@project = Project.new(project_params)
@project.save
end
private
def project_params
params.require(:project).permit(:new, :project, :attrs, tasks_attributes: [:task_name])
end
#app/views/projects/new.html.erb
<%= form_for @project do |f| %>
<%= f.text_field :name %>
<%= f.fields_for :tasks do |t| %>
<%= t.text_field :name %>
<% end %>
<% end %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.