मेरे पास दो मॉडल, लिंक और टैग हैं, जो एक तिहाई, link_tags से जुड़े हैं। निम्नलिखित लिंक मेरे लिंक मॉडल में है।accepts_nested_attributes_for has_many => के साथ: विकल्प
संघों:
class Link < ActiveRecord::Base
has_many :tags, :through => :link_tags
has_many :link_tags
accepts_nested_attributes_for :tags, :allow_destroy => :false,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
end
class Tag < ActiveRecord::Base
has_many :links, :through => :link_tags
has_many :link_tags
end
class LinkTag < ActiveRecord::Base
belongs_to :link
belongs_to :tag
end
links_controller क्रियाएँ:
def new
@link = @current_user.links.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @link }
end
end
def create
@link = @current_user.links.build(params[:link])
respond_to do |format|
if @link.save
flash[:notice] = 'Link was successfully created.'
format.html { redirect_to links_path }
format.xml { render :xml => @link, :status => :created, :location => @link }
else
format.html { render :action => "new" }
format.xml { render :xml => @link.errors, :status => :unprocessable_entity }
end
end
end
देखें कोड new.html.erb से:
<% form_for [current_user, @link], :url => account_links_path do |f| %>
<%= render :partial => "form", :locals => { :f => f } %>
<% end %>
और आंशिक इसी:
<%= f.error_messages %>
<p>
<%= f.label :uri %><br />
<%= f.text_field :uri %>
</p>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<h2>Tags</h2>
<% f.fields_for :tags_attributes do |tag_form| %>
<p>
<%= tag_form.label :name, 'Tag:' %>
<%= tag_form.text_field :name %>
</p>
<% unless tag_form.object.nil? || tag_form.object.new_record? %>
<p>
<%= tag_form.label :_delete, 'Remove:' %>
<%= tag_form.check_box :_delete %>
</p>
<% end %>
<% end %>
<p>
<%= f.submit 'Update' %>
</p>
कोड की निम्न पंक्ति, लिंक नियंत्रक में बनाने कार्रवाई में एक त्रुटि फेंकता है:
@link = @current_user.links.build(params[:link])
त्रुटि: Tag(#-621698598) expected, got Array(#-609734898)
वहाँ has_many में की जरूरत के लिए अतिरिक्त कदम हैं =>: मामले के माध्यम से? ये बुनियादी है_मेनी मामले के लिए एकमात्र संकेतित प्रतीत होते हैं। नई क्रिया (उस रूप आंशिक लोड हो जाता है), तो आप अपने लिंक के माध्यम से एक @tag निर्माण कर रहे हैं में
<% f.fields_for :tags_attributes do |tag_form| %>
मैं कोड आपने पोस्ट किया है के आधार पर अपनी समस्या पुन: पेश करने में असमर्थ हूँ अपने नियंत्रक में लिंक और टैग का निर्माण किया है। क्या आप अपने तीन मॉडलों के एसोसिएशन पार्ट्स (has_many/belong_to/etc लाइन) पोस्ट कर सकते हैं, दोनों प्रासंगिक नियंत्रक क्रियाएं (लिंक # नया, लिंक # बनाएं) और किसी भी व्यू कोड को लिंक फॉर्म के साथ करना है। – EmFi
मैंने एसोसिएशन, कंट्रोलर एक्शन और विचारों के लिए कोड जोड़ा है। आपकी सहायता के लिए धन्यवाद. अब –