2016-07-21 9 views
0

フォームに選択するオプションとして画像を表示できないというこの問題が発生しています。私は写真アルバムを作成すると同時に、アルバムに追加する写真を選択したいと思います。Ruby on Railsはフォームにチェックボックスとして画像を表示します

"collection_check_boxes"を試みましたが、オプションとして表示する既存のイメージを取得できません。私はそれをまだ作成しようとしていません。

私は私の団体を持っています。 私は、画像にPaperclip Gemを使用しています。

モデル

class Album < ActiveRecord::Base 
    belongs_to :user 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :owner, class_name: 'User' 
    belongs_to :album 
    has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ 
end 

コントローラー:

class AlbumsController < ApplicationController 
    before_action :authenticate_user!, only: [:create, :new] 

    def index 
    @albums = current_user.albums 
    end 

    def new 
    @photos = current_user.photos.all 
    @album = Album.new 
    end 

    def create 
    @album = albums.new(album_params) 
    if @album.save 
     redirect_to user_album_path(@album) 
    else 
     redirect_to root_path 
    end 
    end 

    def show 
    @album = Album.find(params[:id]) 
    end 

    def add_photo 
    end 

    private 
    def album_params 
     params.require(:album).permit(:name) 
    end 
end 

再生回数:

<%= form_for @album, url: user_albums_path do |f| %> 
    <form> 
     <div class="field"> 
     <%= f.label :Name %><br /> 
     <%= f.text_field :name %> 
     </div> 

     ####################Tried this but didn't work because the image isn't a text_method 
     <div> 
     <%= collection_check_boxes(:albums, :photo_ids, current_user.photos.all, :id, image_went_here) %> 
     </div> 
     #################### 
     <div class="actions"> 
     <%= f.submit "Create" %> 
     </div> 
    </form> 

    <% end %> 

答えて

0
collection_check_boxes(:albums, :photo_ids, 
         current_user.photos.all, :id, :id) do |b| 
    b.label(class: "check_box") { 
     b.check_box(class: "check_box") + image_tag(object.image.url) 
    } 
end 

objectは、Photoを表すブロックにcurrent_user.photos.allで与えられます。 Photoモデルに合わせてobject.photo.urlの参照を変更する必要があります。 documentationにブロックcollection_check_boxesを渡す例を参照してください。

+0

お返事ありがとうございます。私はあなたの提案を試みましたが、残念ながら画像を表示する際に問題が残っていました。それは私が使用したオブジェクトが定義されていないと言っています。私はそれを別の方法で解決しました。 –

0

私は、text_method引数を埋めるためにModelにメソッドを作成することで解決することができました。

ビュー:

<%= collection_check_boxes(:albums, :photo_ids, @photos, :id, :myPhoto) %> 

モデル:

def myPhoto 
    ActionController::Base.helpers.image_tag("#{image.url(:thumb)}") 
end 

インスタンス化の方法は私がcollection_check_boxesでIMAGE_TAGを挿入することができモデル。

関連する問題