2016-11-26 1 views
0

하드 코딩 된 문자열이 서버에서 어떻게 NULL이 될 수 있습니까? 나는 같은 접근법으로 다른 접근법으로 그것을 저장하려고 노력했다. Carrierwave에서 nginx, mysql, react 및 rails 5로 도커를 실행 중입니다.레일 및 Carrierewave : belongs_to 모델로 이미지 (하드 코딩 된) 문자열을 NULL로 저장 하시겠습니까?

create_table "galleries", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| 
    t.string "name" 
    t.text  "description", limit: 65535 
    t.datetime "created_at",    null: false 
    t.datetime "updated_at",    null: false 
end 

create_table "gallery_images", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| 
    t.integer "gallery_id" 
    t.string "image" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 

.

class ImageForm extends React.Component { 
    return (
    <form class="new_gallery" id="new_gallery" enctype="multipart/form-data" action="/galleries" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="DCMwHHjARRa1p+tCf8dg2+SIq3Jp8yEAhZtmuqc8nOy0auZdY/pxlTlp1rla0AzL5z3pzsUOZpkfcYWqo/EK5g==" /> 
    <div class="field"> 
     <label for="gallery_name">Navn</label> 
     <input type="text" name="gallery[name]" id="gallery_name" /> 
    </div> 
    <div class="field"> 
     <label for="gallery_description">Beskerivelse</label> 
     <textarea name="gallery[description]" id="gallery_description"></textarea> 
    </div> 
     <div class="field"> 
     <label for="gallery_gallery_images_attributes_0_image">Billeder</label> 
     <input multiple="multiple" name="gallery_images[image][]" type="file" id="gallery_gallery_images_attributes_0_image" /> 
     </div> 
    <div class="actions"> 
     <input type="submit" name="commit" value="Create Gallery" data-disable-with="Create Gallery" /> 
    </div> 
    </form> 
)} 
}; 

.

class Gallery < ApplicationRecord 
    has_many :gallery_images 
    accepts_nested_attributes_for :gallery_images 
end 

class GalleryImage < ApplicationRecord 
    mount_uploader :image, ImageUploader 
    belongs_to :gallery 
end 

# POST /galleries 
def create 
    @gallery = Gallery.new(gallery_params) 
    logger.debug(params[:gallery_images]['image'][0])  
    if @gallery.save 
    @gallery_images = GalleryImage.create!(gallery_id: @gallery.id, image: "5_star.png")  
    redirect_to @gallery, notice: 'Gallery was successfully created.' 
    else 
    render :new 
end 
def gallery_params 
    params.require(:gallery).permit(:name, :description, gallery_images_attributes: [:id, :gallery_id, :image]) 
end 

그리고이 .. 어떤 제안을 통해 흰 머리를 얻기 로그 출력

Started POST "/galleries" for 127.0.0.1 at 2016-11-25 23:31:46 +0000 
Processing by GalleriesController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"14bAJ6+hQU330FW2xIpP2Cy8NGKzVF8GtJQreqO0mIRIcMWNT1V1L+m9cSfH3dpoZhc/alOtjlQnGTGh/gmTaQ==", 
"gallery"=>{"name"=>"jkl", "description"=>"jkl"}, "gallery_images"=> {"image"=>["1_star.png"]}, "commit"=>"Create Gallery"} 
1_star.png // <---- DEBUG 
(0.2ms) BEGIN 
SQL (0.4ms) INSERT INTO `galleries` (`name`, `description`,  `created_at`, `updated_at`) 
VALUES ('jkl', 'jkl', '2016-11-25 23:31:46', '2016-11-25 23:31:46') 
(74.6ms) COMMIT 
(0.4ms) BEGIN 
Gallery Load (0.4ms) SELECT `galleries`.* FROM `galleries` WHERE `galleries`.`id` = 96 LIMIT 1 
SQL (0.4ms) INSERT INTO `gallery_images` (`gallery_id`, `created_at`, `updated_at`, `image`) 
VALUES (96, '2016-11-25 23:31:46', '2016-11-25 23:31:46', NULL) // <---- NULL??? 
(81.9ms) COMMIT 
Redirected to http://0.0.0.0:8080/galleries/96 
Completed 302 Found in 209ms (ActiveRecord: 161.9ms) 

nginx_1 | 172.18.0.1 - - [25/Nov/2016:23:31:23 +0000] "POST /galleries HTTP/1.1" 302 109 "http://0.0.0.0:8080/galleries/new" 

?

답변

0

형식을 camelcase로 변경하여 해결했습니다. enctype -> encType accept-charset -> acceptCharset입니다. 두 번째로 값을 바꿀 수있는 방법을 아직 모르겠다.

관련 문제