खोज…


रूबी ऑन रेल्स में नेस्टेड फॉर्म को कैसे सेटअप करें

पहली बात यह है: एक मॉडल जिसमें किसी अन्य मॉडल के साथ 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 ऑब्जेक्ट बनाने के लिए, हमारे पास ऐसा कुछ होना चाहिए, और ऐसा करने के कई तरीके हैं:

  1. new तरीके से Projectscontroller में, आप लिख सकते हैं: @todo = @project.todos.build या @todo = @project.todos.new एक नई Todo वस्तु को तुरंत करने के लिए।

  2. आप इसे देखने के लिए भी कर सकते हैं: <%= 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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow