Ruby on Rails
रूबी ऑन रेल्स में नेस्टेड फॉर्म
खोज…
रूबी ऑन रेल्स में नेस्टेड फॉर्म को कैसे सेटअप करें
पहली बात यह है: एक मॉडल जिसमें किसी अन्य मॉडल के साथ has_many
संबंध होता है।
class Project < ApplicationRecord
has_many :todos
end
class Todo < ApplicationRecord
belongs_to :project
end
ProjectsController
:
class ProjectsController < ApplicationController
def new
@project = Project.new
end
end
एक नेस्टेड रूप में, आप एक ही समय में एक मूल वस्तु के साथ बच्चे के ऑब्जेक्ट बना सकते हैं।
<%= nested_form_for @project do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% # Now comes the part for `Todo` object %>
<%= f.fields_for :todo do |todo_field| %>
<%= todo_field.label :name %>
<%= todo_field.text_field :name %>
<% end %>
<% end %>
जैसा कि हमने Project.new
साथ @project
को इनिशियलाइज़ किया है Project.new
एक नया Project
ऑब्जेक्ट बनाने के लिए कुछ है, उसी तरह Todo
ऑब्जेक्ट बनाने के लिए, हमारे पास ऐसा कुछ होना चाहिए, और ऐसा करने के कई तरीके हैं:
new
तरीके सेProjectscontroller
में, आप लिख सकते हैं:@todo = @project.todos.build
या@todo = @project.todos.new
एक नईTodo
वस्तु को तुरंत करने के लिए।आप इसे देखने के लिए भी कर सकते हैं:
<%= f.fields_for :todos, @project.todos.build %>
मजबूत परिमों के लिए, आप उन्हें निम्नलिखित तरीके से शामिल कर सकते हैं:
def project_params
params.require(:project).permit(:name, todo_attributes: [:name])
end
चूंकि, Todo
ऑब्जेक्ट्स Project
ऑब्जेक्ट के निर्माण के माध्यम से बनाए जाएंगे, इसलिए आपको निम्नलिखित बातों को जोड़कर Project
मॉडल में इस बात को निर्दिष्ट करना होगा:
accepts_nested_attributes_for :todos