ギャラリー ビュー パーシャルで自分のギャラリーに関連付けられた新しいイメージを作成するべきではないことはわかっています。ただし、ActiveAdmin の生成されたコントローラーでこれを行う方法がわかりません。これは、リソース ファイルの "Controller" メソッドを使用してカスタマイズできるようです。ビューのパーシャルの代わりに Controller メソッドを使用してこれを行うにはどうすればよいですか?
ここに私のギャラリーリソースファイルがあります:
ActiveAdmin.register Gallery do
controller.authorize_resource
scope_to :current_admin_user
before_filter :block_access
controller do
def block_access
if params && params['q'] && params['q']['admin_user_id_eq']
params['q']['admin_user_id_eq'] = nil
end
end
end
form :partial => "form"
end
ここに私のギャラリービューの部分があります:
<% new_image = @gallery.images.build %>
<%= semantic_form_for [:admin, @gallery] do |g| %>
<%= g.inputs "Details" do %>
<%= g.input :title %>
<%= g.input :images, :as => :check_boxes, :label_method => Proc.new { |image| image_tag(image.thumb_path, :alt => "") + content_tag("h3", image.title) } %>
<% end %>
<%= g.inputs :for => [:images, new_image], :name => "New Image" do |image| %>
<% if image.object.new_record? %>
<%= image.input :title %>
<%= image.input :asset, :as => :file %>
<% end %>
<% end %>
<%= g.buttons %>
<% end %>
更新 #1:次のメソッドを "controller do" ブロック内に追加すると ( Thomas Watsonの提案に基づく)、ギャラリーの作成/編集に役立ちました。
def new
@gallery = Gallery.new
@new_image = @gallery.images.build
new!
end
def edit
@gallery = Gallery.find(params[:id])
@new_image = @gallery.images.build
edit!
end
def update
@gallery = Gallery.find(params[:id])
@new_image = @gallery.images.build
update!
end