2016-06-01 4 views
0

クリックして画像を削除します。 これは私が画像上でクリックした後、画像が削除されますRails、アイテムをリモートで削除した後:フォームの最初の引数にnilを含めることも、空にすることもできません。

<%=form_for @area, url: areas_update_path, remote: true, html: {class: "form-horizontal",:multipart => true} do |f|%> 
.... 
<% @area.area_attachments.each do |a| %> 
    <%unless a.image.blank?%> 
    <%= link_to delete_area_attachment_path(a), :remote => true, :method => :delete do%> 
     <%= image_tag a.image_url(:thumb), class:"delete-image" %>     
    <% end %> 
    <% end %> 
<% end %> 
.... 
<% end %> 

私の見解であるが、私は取得

nilを含めるか、空にすることはできません形式で

最初の引数

私が投稿したコードの最初の行(@areaと思います)

私のエリア_attachments_controllerの私のdelete_area_attachmentメソッド

def delete_area_attachment 
    @areaAttachment = AreaAttachment.find(params[:id]) 
    @areaAttachment.destroy 

    respond_to do |format| 
    format.js 
    end 
end 

@area変数は初期化する必要がありますが、なぜですか? 私が削除しようとしているのは、領域ではなくarea_attachmentです。すでに初期化していますので、@area変数はそれと何が関係していますか?

どうすればここに行きますか?

EDIT: 私の相対的な路線:@areaAttachment.destroy追加する前に

#Area Paths 
    get '/areas/new', to: 'areas#new', :as => 'areas_new' 
    post '/areas/create', to: 'areas#create', :as => 'areas_create' 
    get '/areas/:id/destroy', to: 'areas#destroy', :as => 'areas_destroy' 
    delete 'delete_area/:id', controller: 'areas', action: 'delete_area' 
    get '/areas/:id/edit', to: 'areas#edit', :as => 'areas_edit' 
    patch '/areas/:id/update', to: 'areas#update', :as => 'areas_update' 

    #Area Attachment Paths 

    delete 'delete_area_attachment/:id', controller: 'area_attachments', action: 'delete_area_attachment', :as => 'delete_area_attachment' 

マイareas_controller delete_area_attachmentで

class AreasController < ApplicationController 

    before_action :set_areas 
    before_action :set_area, only: [:edit, :delete, :update, :destroy] 


    def new 
     @area = Area.new 
     @languages = Language.all 
     @area_attachment = @area.area_attachments.build 
    end 

    def create 
     @area = Area.new(area_params) 

     if @area.save && manage_strings 
      params[:area_attachments]['image'].each do |a| 
       @area_attachment = @area.area_attachments.create!(:image => a, :area_id => @area.id) 
      end 
      @status = 'success' 
     else 
      @status = 'error' 
      @errormessages = @area.errors.full_messages 
     end 
     respond_to do |format| 
      format.js 
     end 
    end 

    def edit   

    end 

    def update 
     if @area.update(area_params) && manage_strings 
      params[:area_attachments]['image'].each do |a| 
       @area_attachment = @area.area_attachments.create!(:image => a, :area_id => @area.id) 
      end 
      @status = 'success' 
     else 
      @status = 'error' 
      @errormessages = @area.errors.full_messages 
     end 
     respond_to do |format| 
      format.js 
     end 
    end 

    def delete_area 
     @area = Area.find(params[:id]) 
     @area.destroy 

     respond_to do |format| 
      format.js 
     end 
    end 

    def find_area_by_id 
     area = Area.find(params[:id]) 
     render json: area 
    end 

    protected 

    def news_list 
     respond_to do |format| 
      format.js 
     end 
    end 



    private 

    def area_params 
     params.require(:area).permit(:id, area_attachments_attributes: [:id, :area_id, :image]) 
    end 

    def set_area 
     @area = Area.find_by_id(params[:id]) 
     @languages = Language.all 
     @area_attachments = @area.area_attachments.all 
    end 

    def set_areas 
     @areas = Area.all 
    end 

    def manage_strings 
     if params[:area][:strings].any? 
      params[:area][:strings].each do |key,value| 
       string = @area.article_localizations.find_or_initialize_by(:language_id => key.to_i) 
       string.title = params[:area][:strings][key][:title] 
       string.text = params[:area][:strings][key][:text] 
       string.save 
      end 
     end 
    end 

end 
+0

あなたは、フォーム内のリンクを得ましたか。非常に珍しく不要です。 – Pavan

+0

@Pavan各エリアにはarea_attachmentsがあり、それらをすべて表示してクリックして削除します。 –

+1

なぜあなたは 'link_to'が必要なものを実行するので、フォームを使用しているのか分かりませんでした。 – Pavan

答えて

1

@area = Area.find_by_id(@areaAttachment.area_id) 
関連する問題