2017-06-26 2 views
1

私は最初のRailsプロジェクトに取り組んでおり、画像のアップロードを扱うためにPaperclip Gemをインストールしました。つまり、正常に動作しますが、以下のスクリーンショットのように、すべてのアップロードフィールドが別々に表示されます。以下はRuby on RailsでPaperclip Gemを使用してすべての入力フィールドをボタンに変換

enter image description here

個別に壊れたすべての画像入力フィールドであるように私のコードです。

モデル/ project.rb

class Project < ApplicationRecord 
    has_many :tasks 

    validates :name, presence: true, length: { maximum: 50 } 
    validates :content, presence: true, length: { maximum: 500 } 
    validates :price, presence: true, numericality: { only_integer: true } 

    has_attached_file :avatar, styles: { medium: '680x300>', thumb: '170x75>' }, default_url: '/images/:style/missing.png"' 
    validates_attachment_content_type :avatar, content_type: '/\Aimage\/.*\z/' 
end 

管理/ project.rb

ActiveAdmin.register Project do 
    permit_params :name, :content, :price, :image 

    show do |t| 
    attributes_table do 
     row :name 
     row :content 
     row :price 
     row :image do 
     project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, 'No Photo Yet') 
     end 
    end 
    end 

    # form html: { enctype: 'multipart/form-data' } do |f| 
    # f.input do 
    #  f.input :name 
    #  f.input :content 
    #  f.input :price 
    #  f.input :image, hint: f.project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, 'Upload JPG/PNG/GIF Image') 
    # end 
    # f.actions 
    # end 
end 

私はすべてのこれらの入力を取り、一部、それらに自動持つ方法があることを知っていますアップロードボタンのうち、コードに苦労しています。私は私のadmin/project.rbコードの他の部分のコメントを外すと、以下のエラーが出てくる。

私は、私はあなたのフォームで作らなければならないカップルの変更を参照してくださいActiveAdmin、ペーパークリップ5.1とRails 5.1.1

Started GET "/admin/projects/2/edit" for 127.0.0.1 at 2017-06-26 13:14:33 -0700 
Processing by Admin::ProjectsController#edit as HTML 
    Parameters: {"id"=>"2"} 
    AdminUser Load (0.1ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = ? ORDER BY "admin_users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] 
    Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 
    Rendering /Users/rooster/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activeadmin-1.0.0/app/views/active_admin/resource/edit.html.arb 
    CACHE Project Load (0.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 
    Rendered /Users/rooster/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activeadmin-1.0.0/app/views/active_admin/resource/edit.html.arb (129.0ms) 
Completed 500 Internal Server Error in 163ms (ActiveRecord: 1.4ms) 



ActionView::Template::Error (wrong number of arguments (given 0, expected 1..2)): 
    1: insert_tag renderer_for(:edit) 
+0

'ActionView :: Template :: Error'の前にログに他のエラーがありますか? – jdgray

+0

@jdgrayコンソールに表示された内容を質問に追加しました。 –

答えて

2

を使用しています。

それは、現在のようになります。

form html: { enctype: 'multipart/form-data' } do |f| 
    f.input do 
    f.input :name 
    f.input :content 
    f.input :price 
    f.input :image, hint: f.project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, 'Upload JPG/PNG/GIF Image') 
    end 
    f.actions 
end 

そして、それは次のようになります作られた

form html: { enctype: 'multipart/form-data' } do |f| 
    f.inputs do 
    f.input :name 
    f.input :content 
    f.input :price 
    f.input :image, hint: resource.project.image? ? image_tag(project.image.url, height: '100') : content_tag(:span, 'Upload JPG/PNG/GIF Image') 
    end 
    f.actions 
end 

つのマイナーな変更を。 inputinputsに変更しました。これはActiveAdminのドキュメントformsを参照した後に変更されました。次にf.project.image?resource.project.image?に変更しました。 resourceは、お客様のProjectオブジェクトに対応しています。

+0

'f.input'を' f.inputs'に変更すると、そのトリックが実行されました。ありがとうございました。 –

関連する問題