私は次のモデルを持っています:
ドキュメント.rb
class Document < ActiveRecord::Base
belongs_to :order
attr_accessible :docfile, :print_format, :user_comment, :paper_type
has_attached_file :docfile,
:styles => {
:thumb => "100x100>"
},
:url => "/order_documents/:order_number/:style/:id.:extension",
:path => ":rails_root/public/order_documents/:order_number/:style/:id.:extension"
validates_attachment_size :docfile, :less_than => 100.megabytes
validates_attachment_content_type :docfile,
:content_type => ['image/jpg', 'image/jpeg', 'image/png', 'application/zip', 'application/x-zip']
end
オーダー.rb
class Order < ActiveRecord::Base
belongs_to :user
has_many :documents, :dependent => :destroy
accepts_nested_attributes_for :documents, :allow_destroy => true
DELIVERY_COMMENT_ROWS_SIZE = 2
DELIVERY_COMMENT_COLS_SIZE = 40
validates_associated :documents
validates :delivery_street, :delivery_address, :presence => true
end
私はOrders_controller.rb を持っています:
class OrdersController < ApplicationController
def new
@order = Order.new
unless params[:add_document]
@order.documents.build
end
respond_to do |format|
format.html
format.js
end
end
def create
@order = Order.new(params[:order])
current_user.orders << @order
respond_to do |wants|
if @order.save
flash[:notice] = 'Заказ создан успешно.'
wants.html {redirect_to my_orders_path}
wants.xml { render :xml => @order.to_xml }
else
wants.html { render :action => "new" }
wants.xml {render :xml => @order.errors}
end
end
end
end
「新しい」アクションのnew.erb.html :
<%= form_for @order, :url => orders_path, :html => { :multipart => true } do |order| %>
<%= order.fields_for :documents do |document| %>
<%= render :partial => "add_document", :locals => {:document => document} %>
<% end %>
<div id="documents"></div>
<%= link_to "add document...", new_order_path(:add_document => true), remote: true %>
<%= submit_tag 'save order', :class => 'submit' %>
<% end %>
そして部分的な_add_document.erb:
<%= document.file_field :docfile %>
<%= document.select(:print_format, Document::PRINT_FORMAT) %>
<%= document.select(:paper_type, Document::PAPER_TYPE) %>
<%= document.text_area :user_comment, :rows => Document::USER_COMMENT_ROWS_SIZE, :cols => Document::USER_COMMENT_COLS_SIZE %>
その場で注文するための新しいドキュメントを作成するのに問題があります (JQuery を使用)。私はnew.js.erb を持っています:
$('<%= escape_javascript(render :partial => "add_document", :locals => { :document => @order.documents.build }) %>').appendTo($('#documents'));
しかし、エラーが発生します:
ActionView::Template::Error (undefined method `file_field' for #<Document:0x695c3d0>)
助けてください。ファイル new.js.erb に書き込む必要がある jquery コードは何ですか? ありがとうございました。