मेरे पास दो मॉडल के बीच स्थापित है Imany और belong_to एसोसिएशन है: परियोजना और कार्य।रेल: नए बच्चे के रिकॉर्ड बनाते समय मौजूदा माता-पिता का चयन करने के लिए फॉर्म?
मैं एक ऐसा फॉर्म बनाने में सक्षम होना चाहता हूं जो मुझे एक नया कार्य बनाने और माता-पिता के रूप में मौजूदा प्रोजेक्ट असाइन करने में सक्षम बनाता है। उदाहरण के लिए, मौजूदा प्रोजेक्ट की सूची से चयन करने के लिए इस फॉर्म में पुलडाउन हो सकता है।
इस एप्लिकेशन में केवल परियोजनाओं का एक सीमित सेट उपलब्ध है, इसलिए मैंने बीजों.आरबी फ़ाइल के माध्यम से परियोजना रिकॉर्ड बनाए हैं। मुझे नई परियोजनाओं के निर्माण के लिए एक फॉर्म बनाने की जरूरत नहीं है।
मेरा मानना है कि मैंने नए कार्य फ़ॉर्म में collection_select
फॉर्म हेल्पर टैग का उपयोग कर समाधान प्राप्त किया है। मैं इस बात से बहुत खुश हूं कि यह अब कैसे काम करता है, लेकिन अगर इस समस्या के अन्य दृष्टिकोण हैं तो बस उत्सुक हैं।
#models/project.rb
class Project < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
end
#models/task.rb
class Task < ActiveRecord::Base
belongs_to :project
end
#controllers/tasks_controller.rb
class TasksController < ApplicationController
def new
@task = Task.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end
def create
@task = Task.new(params[:task])
respond_to do |format|
if @task.save
format.html { redirect_to(@task, :notice => 'Task was successfully created.') }
format.xml { render :xml => @task, :status => :created, :location => @task }
else
format.html { render :action => "new" }
format.xml { render :xml => @task.errors, :status => :unprocessable_entity }
end
end
end
end
#views/new.html.erb
<h1>New task</h1>
<%= form_for(@task) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="select">
<%= collection_select(:task, :project_id, Project.all, :id, :name) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', tasks_path %>
धन्यवाद! यह भी पता लगाने की कोशिश कर रहा था कि कैसे छुटकारा पाना है: उस लाइन पर भी कार्य। – Chanpory