Hmm… Więc tak - wywala błąd, ponieważ chcesz wykonać .map na @categories, które w akcji create jest tylko i wyłącznie w formularzu. Dzięki temu wiadomo, że coś się po prostu nie zapisuje. I teraz - jeśli zamiast .save wywołasz .save! (tak tu chodzi o wykrzyknik) to ta metoda nie zwróci - w Twoim wypadku - false tylko “wznieci” błąd. Konfiguracja STG zwykle ma to do siebie, że wypluwa bezpośrednio błędów, tylko wyświetla info, że “coś poszło nie tak”. Więc musisz zajrzeć do logów serwera railsowego na Twoim hoście (zwykle w katalogu logs) i zobaczyć co nie bangla w zapisywaniu.
Started POST "/books" for 91.237.85.65 at 2015-12-15 17:24:21 +0000
Cannot render console from 91.237.85.65! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by BooksController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"hKI1PzQJ6/C0ChVkIxkPfPW2V4polReFGjyS914EaH3JbeEwGWZfxg6jw/mt8EQdjMoeOWjmpA8kJANFXlLpXQ==", "category_id"=>"1", "book"=>{"book_img"=>#<ActionDispatch::Http::UploadedFile:0x007f87281d08b0 @tempfile=#<Tempfile:/home/ubuntu/workspace/RackMultipart20151215-773-9l8cb8.jpg>, @original_filename="fg.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"book[book_img]\"; filename=\"fg.jpg\"\r\nContent-Type: image/jpeg\r\n">, "title"=>"fdgfd", "description"=>"gdfgdfg", "author"=>"gdfg"}, "commit"=>"Create Book"}
e[1me[36mUser Load (0.2ms)e[0m e[1mSELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1e[0m [["id", 1]]
Command :: file -b --mime '/home/ubuntu/workspace/3d4044d65abdda407a92991f1300ec9720151215-773-ct999s.jpg'
Command :: identify -format '%wx%h,%[exif:orientation]' '/home/ubuntu/workspace/3d4044d65abdda407a92991f1300ec9720151215-773-j21gdl.jpg[0]' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::Errors::CommandNotFoundError: Could not run the `identify` command. Please install ImageMagick.>
Command :: identify -format '%wx%h,%[exif:orientation]' '/home/ubuntu/workspace/3d4044d65abdda407a92991f1300ec9720151215-773-j21gdl.jpg[0]' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::Errors::CommandNotFoundError: Could not run the `identify` command. Please install ImageMagick.>
e[1me[35m (0.1ms)e[0m begin transaction
Command :: file -b --mime '/home/ubuntu/workspace/3d4044d65abdda407a92991f1300ec9720151215-773-w1ikv7.jpg'
e[1me[36m (0.1ms)e[0m e[1mrollback transactione[0m
Completed 422 Unprocessable Entity in 67ms (ActiveRecord: 0.4ms)
ActiveRecord::RecordInvalid (Validation failed: Book img Could not run the `identify` command. Please install ImageMagick., Book img Could not run the `identify` command. Please install ImageMagick.):
app/controllers/books_controller.rb:56:in `create'
Rendered /usr/local/rvm/gems/ruby-2.2.1/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_source.erb (8.6ms)
Rendered /usr/local/rvm/gems/ruby-2.2.1/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (7.3ms)
Rendered /usr/local/rvm/gems/ruby-2.2.1/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (3.9ms)
Rendered /usr/local/rvm/gems/ruby-2.2.1/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (99.3ms)
EDIT: nie zapomnij, że jak znów Ci nie przejdzie save, na przykład dodasz walidację to i tak musisz w akcji ustawić @categories, bo inaczej znów wywali Ci to co na początku.