5

Tôi đang chuyển một ứng dụng sử dụng Carrierwave sang Rails 4, nhưng tôi gặp sự cố với thông số mạnh. Tôi có một mô hình vớiTải lên tệp bằng Rails 4, Tham số mạnh và Carrierwave

accepts_nested_attributes_for :photos 

Sau đây là cách hình ảnh được tải lên được truyền:

{ 
    # ... 
    "model"=> 
    { 
     # ... 
     "photos_attributes"=> 
     { 
      "1362752177921"=> 
      { 
       "image"=>"test.jpg", 
      } 
     } 
    } 
} 

Tuy nhiên tôi dường như không thể tìm ra cách để viết các thông số đó sẽ chấp nhận photos_attributes.

Tôi đã thử .permit(photos_attributes: []) nhưng nó chỉ đơn giản là bỏ qua họ, khi tôi sử dụng permit!, uuid được tạo ra trước khi tiết kiệm không xuất hiện trong SQL và đây là vấn đề thứ hai:

photos.uuid may not be NULL: INSERT INTO "photos" ("created_at", "model_id", "image", "title", "updated_at") VALUES (?, ?, ?, ?, ?) 

Tài liệu cho các thông số mạnh là thiếu ở đây và tôi thậm chí không chắc chắn làm thế nào để tiến hành.

Cập nhật này đã làm việc với các thuộc tính lồng nhau:

params.permit(..., :photos_attributes => ['id', 'title', 'image', '_destroy']) 

Nhưng trông giống như một trong hai Carrierwave hoặc lồng Mẫu nên được cập nhật cho Rails 4 đầu tiên. Nó chỉ đơn giản là cố gắng để lưu một hình ảnh rỗng tất cả các thời gian. Cùng một mã (không strong_params) hoạt động trong Rails 3.

Trả lời

1

này đã làm việc với các thuộc tính lồng nhau:

params.permit(..., :photos_attributes => ['id', 'title', 'image', '_destroy']) 

Nhưng trông giống như một trong hai Carrierwave hoặc lồng Mẫu nên được cập nhật cho Rails 4 đầu tiên. Nó chỉ đơn giản là cố gắng để lưu một hình ảnh trống tất cả các thời gian mà tôi kinda loại bỏ với :reject_if, nhưng nó vẫn không phải là 100 làm việc.