Hi My models are message_thread, message, document (document with attachments I am using paperclip) message_thread =================== has_many messages message ============= belongs_to message_thread has_many :document_messages has_many :documents, :through => :document_messages document ============ has_attached_file :attachment, :storage => :database has_many :document_messages has_many :messages, :through => :document_messages What i need is to create a message_thread with one message and that message with 2(or more) attachments. I tried like messages_controller ===================== def new @message_thread = MessageThread.new @message = @message_thread.messages.build end new.html.erb ===================== <%form_for @message_thread, :url => { :action => "create" },:html => {:multipart => true,:class => "mail-tenant"} do |f| %> <p><%= f.text_field :mail_to %></p> <p> <% f.fields_for :messages do |message| %> <%= message.label :subject,''Subject'' %> <%= message.text_field :subject,:maxlength => 255 %> </p> <div class="attachments"> <p><strong>Attachments:</strong></p> <% message.fields_for :documents do |document| %> <div class="fileinputs"> <%= document.file_field :attachment,:class => "file" %> <%= document.hidden_field :company_id,:value => current_company.try(:id)%> </div> <%end%> <!-- end of f.fields_for :documents --> <%end%> <!-- end of f.fields_for :messages --> </div> <div class="two-button"> <button type="submit" class="button2"><span>Send</span></button> </div> <p>Or <a href="#">Cancel</a></p> <%end%> <!-- form ends here --> But I am getting error ActiveRecord::AssociationTypeMismatch in MessagesController#create Document(#-614356858) expected, got Array(#-608120208) Please help me to solve this. I have a vague idea of using accepts_nested_attributes_for . But please tell here can I use it Thanks in advance Tom -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi, There is an example for nested file upload form by using paperclip. The codes are similar to you, be attention to the usage of accepts_nested_attributes_for. Check it here: http://rails-bestpractices.com/posts/45-use-sti-and-polymorphic-model-for-multiple-uploads On Aug 18, 1:43 pm, Tom Mac <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi > My models are message_thread, message, document (document with > attachments I am using paperclip) > > message_thread > ===================> has_many messages > > message > =============> belongs_to message_thread > has_many :document_messages > has_many :documents, :through => :document_messages > > document > ============> has_attached_file :attachment, > :storage => :database > has_many :document_messages > has_many :messages, :through => :document_messages > > What i need is to create a message_thread with one message and that > message with 2(or more) attachments. I tried like > > messages_controller > =====================> def new > @message_thread = MessageThread.new > @message = @message_thread.messages.build > end > > new.html.erb > =====================> > <%form_for @message_thread, :url => { :action => "create" },:html => > {:multipart => true,:class => "mail-tenant"} do |f| %> > <p><%= f.text_field :mail_to %></p> > <p> > <% f.fields_for :messages do |message| %> > <%= message.label :subject,''Subject'' %> > <%= message.text_field :subject,:maxlength => 255 %> > </p> > <div class="attachments"> > <p><strong>Attachments:</strong></p> > <% message.fields_for :documents do |document| %> > <div class="fileinputs"> > <%= document.file_field :attachment,:class => "file" %> > <%= document.hidden_field :company_id,:value => > current_company.try(:id)%> > </div> > <%end%> <!-- end of f.fields_for :documents --> > <%end%> <!-- end of f.fields_for :messages --> > </div> > <div class="two-button"> > <button type="submit" class="button2"><span>Send</span></button> > </div> > <p>Or <a href="#">Cancel</a></p> > <%end%> <!-- form ends here --> > > But I am getting error > ActiveRecord::AssociationTypeMismatch in MessagesController#create > > Document(#-614356858) expected, got Array(#-608120208) > > Please help me to solve this. I have a vague idea of using > accepts_nested_attributes_for . But please tell here can I use it > > Thanks in advance > > Tom > -- > Posted viahttp://www.ruby-forum.com/.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi Thanks for replying.I could do it partially with the following modifications to my models and views message_thread =================== has_many messages accepts_nested_attributes_for :messages message ============= belongs_to message_thread has_many :document_messages has_many :documents, :through => :document_messages accepts_nested_attributes_for :documents,:reject_if => lambda {|a| a[:attachment].blank?} validates_presence_of :subject No other change. But the problem is from the view I am not selecting any file for upload and not entering values for ''subject'' . So surely the validation will fail and rerender my new action . My ''create'' action like def create @message_thread = MessageThreads.new(params[:message_thread]) if @message_thread.save flash[:notice] = "Message sent successfully" redirect_to home_url else flash.now[:error] = @message_thread.errors.full_messages.join("<br />") render :action => ''new'' end end The problem is now the file_field disappears. What might be the cause?I am struggling with this for hours.Please help Thanks -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi, Be sure you have build the document for message before you use it. On 8月19日, 下午1时08分, Tom Mac <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi > Thanks for replying.I could do it partially with the following > modifications to my models and views > > message_thread > ===================> has_many messages > accepts_nested_attributes_for :messages > > message > =============> belongs_to message_thread > has_many :document_messages > has_many :documents, :through => :document_messages > accepts_nested_attributes_for :documents,:reject_if => lambda {|a| > a[:attachment].blank?} > validates_presence_of :subject > > No other change. But the problem is from the view I am not > selecting any file for upload and not entering values for ''subject'' . > So surely the validation will fail and rerender my new action . My > ''create'' action like > > def create > @message_thread = MessageThreads.new(params[:message_thread]) > if @message_thread.save > flash[:notice] = "Message sent successfully" > redirect_to home_url > else > flash.now[:error] = @message_thread.errors.full_messages.join("<br > />") > render :action => ''new'' > end > end > > The problem is now the file_field disappears. What might be the > cause?I am struggling with this for hours.Please help > > Thanks > -- > Posted viahttp://www.ruby-forum.com/.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.