/ / रेल एसोसिएटेड मॉडल फॉर्म - रूबी-ऑन-रेल, फॉर्म, रूबी-ऑन-रेल -५

रेल एसोसिएटेड मॉडल फॉर्म - रूबी-ऑन-रेल, फॉर्म, रूबी-ऑन-रेल्स -5

मेरे पास मॉडल हैं

influencers (id, name, ...)
social_accounts (id, name, ....)
influencer_accounts (id, influencer_id, social_account_id, name, url)

जब मैं एक इन्फ्लूएंसर बनाता हूं तो मुझे 7 मिलते हैं social_accounts जिसके लिए मुझे प्रभावक के लिए खातों का विवरण दर्ज करना होगा। वहाँ एक तरह से मैं के लिए रूपों का निर्माण कर सकता है influencers has_many influencer_accounts एक पाश के माध्यम से विचारों से?

यहां छवि विवरण दर्ज करें

मैंने क्या कोशिश की है?

मॉडल / influencer.rb

class Influencer < ApplicationRecord

# Associations
has_many :influencer_accounts

accepts_nested_attributes_for :influencer_accounts , :allow_destroy => true, reject_if: proc { |attributes| attributes["account_url"].blank? }


end

मॉडल / influencer_accounts.rb

class InfluencerAccount < ApplicationRecord

# Associations
belongs_to :influencer
belongs_to :social_account

end

influencers_controller.rb

  def new
@influencer = Influencer.new
# @influencer.influencer_accounts.build

@social_accounts = SocialAccount.all
end


def create
# render json: params
@influencer = Influencer.new(influencer_params)

if @influencer.save
redirect_to @influencer, notice: "Influencer was successfully created."
else
@social_accounts = SocialAccount.all
render :new
end

end

विचारों / प्रभावशाली व्यक्तियों / new.html.erb

<% content_for :title, "New Influencer" %>

<div class="bg-light lter b-b wrapper-md">
<h1 class="m-n font-thin h3">New Influencer</h1>
</div>

<div class="wrapper-md">

<%= render "partials/flash_message" %>

<div class="panel panel-default">
<div class="panel-heading font-bold">
New Influencer
</div>
<div class="panel-body">
<%= nested_form_for @influencer, url: influencers_path, :html => {:multipart => true, :class => "form-horizontal"} do |f| %>

<div class="form-group <%= "has-error" if (@influencer.errors[:first_name].present? or @influencer.errors[:last_name].present?) %>">
<%= f.label :first_name, "Name", :class => "col-sm-2 control-label" %>
<div class="col-sm-3">
<%= f.text_field :first_name, :class => "form-control" %>
<%= show_errors(@influencer, :first_name).html_safe %>
</div>
<div class="col-sm-3">
<%= f.text_field :last_name, :class => "form-control" %>
<%= show_errors(@influencer, :last_name).html_safe %>
</div>
</div>
<div class="line line-dashed b-b line-lg pull-in"></div>

<div class="form-group <%= "has-error" if @influencer.errors[:email].present? %>">
<%= f.label :email, "Email Address", :class => "col-sm-2 control-label" %>
<div class="col-sm-6">
<%= f.text_field :email, :class => "form-control" %>
<%= show_errors(@influencer, :email).html_safe %>
</div>
</div>
<div class="line line-dashed b-b line-lg pull-in"></div>

<div class="form-group <%= "has-error" if @influencer.errors[:phone].present? %>">
<%= f.label :phone, "Phone Number", :class => "col-sm-2 control-label" %>
<div class="col-sm-6">
<%= f.text_field :phone, :class => "form-control" %>
<%= show_errors(@influencer, :phone).html_safe %>
</div>
</div>
<div class="line line-dashed b-b line-lg pull-in"></div>

<div class="form-group">
<label class="col-sm-2 control-label">Social Networks</label>
<div class="col-sm-10">
<div id="social-accounts">
<% @social_accounts.each do |social_account| %>

<%= f.fields_for :influencer_accounts do |ia| %>
<div class="row">

<div class="col-sm-3">
<%= ia.collection_select(:social_account_id, @social_accounts, :id, :name, { :prompt => false, :selected => social_account.id }, {:class => "form-control" }) %>
</div>

<div class="col-sm-5">
<div class="input-group m-b">
<%= ia.text_field :account_url, :class => "form-control" %>
<span class="input-group-btn">
<a class="btn btn-default remove"><span class="text-danger"><i class="fa fa-times"></i></span></a>
<%= ia.link_to_remove "Remove this task" %>
</span>
</div>
</div>


</div>
<% end %>
<% end %>
</div>

<p><%= f.link_to_add "Add a account", :influencer_accounts, "data-target" => "#social-accounts", class: "btn btn-info btn-xs" %></p>
</div>
</div>
<div class="line line-dashed b-b line-lg pull-in"></div>


<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<%= f.submit "Create Influencer", :class => "btn btn-primary" %>
</div>
</div>

<% end %>
</div>
</div>
</div>

मेरे द्वारा सबमिट करने का प्रयास करने के बाद - फ़ॉर्म सहेजता नहीं है और दोहराए गए फ़ील्ड को वापस करता है

यहां छवि विवरण दर्ज करें

उत्तर:

उत्तर № 1 के लिए 1

आपको उपयोग करना चाहिए कोकून रत्न इसके लिए और आपको भी इसका उपयोग करना चाहिए नेस्टेड रूप मणि