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
あなたは、フォーム内のリンクを得ましたか。非常に珍しく不要です。 – Pavan
@Pavan各エリアにはarea_attachmentsがあり、それらをすべて表示してクリックして削除します。 –
なぜあなたは 'link_to'が必要なものを実行するので、フォームを使用しているのか分かりませんでした。 – Pavan