0

それは醜い店複数の画像 - ネストされた属性 - レール5

this is how the form looks like

に見えるので、これはコード

である代わりに私が使用し、この1のペーパークリップを使用して複数の画像を保存するが、別の方法であります

アプリ/ビュー/記事/ _form.html.erb

<%= simple_form_for @post, html: { class: 'form-horizontal', multipart: true } do |f| %> 
    <%= f.input :title %> 
    <%= f.input :description %> 

     <%= f.simple_fields_for :pictures do |builder| %> 
    <% if builder.object.new_record? %> 

     <%= builder.input :image, :input_html => { :multiple => true } %> 
    <% end %> 
     <% end %> 

    <%= f.input :price %> 
    <%= f.input :city %> 
    <%= f.input :phone %> 

    <%= f.button :submit %> 
<% end %> 

、これはあります今エラー許可されていないパラメータがあり、新しいposts_controllerでアクション

アプリ/コントローラ/ posts_controller.rb

def new 
    @post = current_user.posts.build 
    @post.pictures.build 
    end 

    def create 
    @post = current_user.posts.build(post_params) 

    if @post.save 
     params[:image].each do |picture|  

     @post.images.create(:image=> picture) 

     end 
     redirect_to root_path 
    else 
     redirect_to new_post_path 
    end  
    end 
    private 

    def post_params 
     params.require(:post).permit(:title, :price, :description, :phone, :image, :city, pictures_attributes: [:image]) 
    end 

を作成:画像

Started POST "/posts" for 127.0.0.1 at 2016-08-18 07:04:27 +0100 
Processing by PostsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"1M2k+ZnouBRdtP6/EDHtLtewiwiS32uSLcZldPNghFt/8n81txtUAAdbKzlCpn6x5l4RJNZYYqV7OVTs6pyvBQ==", "post"=>{"title"=>"setst", "description"=>"setset", "pictures_attributes"=>{"0"=>{"image"=>[#<ActionDispatch::Http::UploadedFile:0xa337e44 @tempfile=#<Tempfile:/tmp/RackMultipart20160818-20404-fu0x0v.jpg>, @original_filename="column-01.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"post[pictures_attributes][0][image][]\"; filename=\"column-01.jpg\"\r\nContent-Type: image/jpeg\r\n">, #<ActionDispatch::Http::UploadedFile:0xa337e30 @tempfile=#<Tempfile:/tmp/RackMultipart20160818-20404-1sidf3n.png>, @original_filename="fiy_away.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"post[pictures_attributes][0][image][]\"; filename=\"fiy_away.png\"\r\nContent-Type: image/png\r\n">]}}, "price"=>"3", "city"=>"setset", "phone"=>""}, "commit"=>"Create Post"} 
    User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] 
Unpermitted parameter: image 
    (0.2ms) begin transaction 
    (0.1ms) rollback transaction 
Redirected to http://localhost:3000/posts/new 
Completed 302 Found in 26ms (ActiveRecord: 0.8ms) 

私が唯一に使いたいですすべての画像を追加して配列として保存するファイルフィールドは可能です!!!

この

は私がやったすべては、私が

<%= form_for @post, html: { class: 'form-horizontal', multipart: true } do |f| %> 

<%= f.label :title %> 
<%= f.text_field :title %> 

<%= f.label :description %> 
<%= f.text_field :description %> 

     <%= f.fields_for :pictures do |builder| %> 

    <%= f.label :pictures, :class => 'control-label' %> 

    <%= file_field_tag "images[]", type: :file, multiple: true %> 

     <% end %> 
<%= f.label :price %> 
<%= f.text_field :price %> 

    <%= f.label :city %> 
<%= f.text_field :city %> 

    <%= f.label :phone %> 
<%= f.text_field :phone %> 


    <%= f.submit nil, :class => 'btn btn-primary' %> 
<% end %> 

のform_forとのcreateアクションで通常のsimple_formを削除し、使用しているこの問題の解決策を見つけたレポhttps://github.com/vogdev/colne2

+0

使用繭の宝石:https://github.com/nathanvda/cocoon – Emu

+0

はこれを試す - http://stackoverflow.com/questions/11605787/uploading-multiple-files-with-paperclip#19379756 –

+0

許可されていないパラメータ:画像。 '' params.require(:post).permit(:title、:price、:description、:phone、:image、:city、pictures_attributes:[:image]) ' –

答えて

0

ですposts_controller

def create 

    @post = current_user.posts.build(post_params) 


    if @post.save 
     if params[:images] 
     #===== The magic is here ;) 
     params[:images].each { |image| 
      @post.pictures.create(image: image) 
     } 
     end 
     redirect_to root_path 
    else 
     redirect_to new_post_path 
    end  
    end 
0

私はsimを持っています入れ子にされたリソースを持つRails 5のilar問題。を複数だけ追加するだけで解決しました: on file_field

メディックと患者の2つのモデルがあります。患者は、私が考案を使用していますので、私はビューで@patient = current_medic.patient

にアクセスすることができ、メディックからネストされたリソースです:

<%= form_for @patient, url: patients_path, html: { multipart: true } do |f| %> 
    <%= f.file_field :image, multiple: true %> 
<% end %> 

EDIT - メソッドを作成します。

def create 
    @patient = current_medic.patients.new(patient_params) 

    respond_to do |format| 
    if @patient.save 
     format.html { redirect_to @patient, :flash => { :success => 'Patient was successfully created.' } } 
    else 
     format.html { render :new } 
    end 
    end 
end 

・ホープ、この助けて!

+0

私はcreateメソッドを表示できますか? –

関連する問題