Полиморфная вложенная форма с скрепкой в ​​направляющих 3.1.3 - PullRequest
1 голос
/ 05 декабря 2011

Мои модели:

class NewsItem < ActiveRecord::Base
  has_many :file_uploads, :as => :uploadable
  accepts_nested_attributes_for :file_uploads, :allow_destroy => true
end


class FileUpload < ActiveRecord::Base
  belongs_to :uploadable, :polymorphic => true
  has_attached_file :upload, :styles => {:thumb => '100x100>'}
end

Код формы (вложенный в NewsItem)

...

<%= f.fields_for :file_uploads do |upload| %>
  <div class="file_upload">
    <%= upload.file_field :upload %>
  </div>

  ...

<% end %>

...

При отправке я получаю следующую ошибку: «неизвестный атрибут: загрузить». Вот параметры:

{"utf8"=>"✓",
 "authenticity_token"=>"MBfxJ4XTizCXv3Mpu971VHCm60bS3Y84Kdxfe+VJD2w=",
 "news_item"=>{"title"=>"",
 "body"=>"",
 "published_date"=>"",
 "file_uploads_attributes"=>{"0"=>{"upload"=>#<ActionDispatch::Http::UploadedFile:0x000001070112a8 @original_filename="rails-dd352fc2630e5f9aa5685ef1d7fe5997.png",
 @content_type="image/png",
 @headers="Content-Disposition: form-data; name=\"news_item[file_uploads_attributes][0][upload]\"; filename=\"rails-dd352fc2630e5f9aa5685ef1d7fe5997.png\"\r\nContent-Type: image/png\r\n",
 @tempfile=#<File:/var/folders/hb/2bkct63171lck8d3sg0xfq0c0000gn/T/RackMultipart20111204-3216-71in7a>>,
 "name"=>"",
 "caption"=>""}}},
 "commit"=>"Create News item"}

Я использую Rails 3.1.3 и скрепку "~> 2.4".

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Я бы не стал использовать общие термины, такие как «загружаемый», потому что результирующий термин «загрузка» потенциально может привести к коллизии.

предложения youavmatchulsky также хороши - если у вас есть где-то attr_accessible, вам нужно сделать file_uploads_attributesтакже доступны.

Кроме того, параметры не выглядят так, как будто форма состоит из нескольких частей, поэтому я бы принудительно добавил: multipart => true в вызове form_for

РЕДАКТИРОВАТЬ: Четныйхотя предполагается, что произойдет автоматически, вам, возможно, придется явно принять accept_nested_attributes_for для соединения, а затем для модели соединения accept_nested_attributes_for: uploadable - я обнаружил, что anaf довольно странно с такими вещами, как полиморфные объединения иногда

0 голосов
/ 05 декабря 2011

Перезапуск приложения rails устранил проблему.Я предполагаю, что я установил драгоценный камень, но не перезапустил, приводя к ошибке выше.Извлеченный урок: всегда перезагружаться после установки драгоценного камня.

...