私はペーパークリップとjQuery-File-UploadでRails 3を使用しています。どちらも素晴らしい宝石ですが、特にネストされたモデルではうまく機能しないようです。
私のアプリには、submission
とupload
、 、 の 2 つのモデルがあります。
**###submssion.rb:**
attr_accessible :email, :uploads_attributes
has_many :uploads, :dependent => :destroy
accepts_nested_attributes_for :uploads, :allow_destroy => true
**###upload.rb:**
belongs_to :submission
has_attached_file :package
include Rails.application.routes.url_helpers
def to_jq_upload
{
"name" => read_attribute(:package_file_name),
"size" => read_attribute(:package_file_size),
"url" => package.url(:original),
"delete_url" => submission_path(self),
"delete_type" => "DELETE"
}
end
私の形で:
<%= f.fields_for :uploads do |upload| %>
<%= upload.file_field :package %>
<% end %>
私のコントローラーで:
def create
@submission = Submission.new(params[:submission])
respond_to do |format|
if @submission.save
format.html { render :json => [@submission.uploads.to_jq_upload].to_json, :content_type => 'text/html',:layout => false }
format.json { render json: [@submission.uploads.to_jq_upload].to_json, status: :created, location: @upload }
else
format.html { render action: "new" }
format.json { render json: @submission.errors, status: :unprocessable_entity}
end
end
end
ただし、ファイルをアップロードするたびに、コンソールに次のように表示されます。
NoMethodError (undefined method `to_jq_upload' for #<ActiveRecord:....
私の質問は、現在のモデルのコントローラーで別のモデルのメソッドにアクセスする方法ですか?