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