嗨,我很堅持在活動管理中構建自定義表單。我已經想通了,甚至使用活動管理員設置自己的自定義表單。不過,我需要在這裏創建一個動態表單。這涉及到進行一些Ajax調用並返回用戶填寫表單的部分內容。在ActiveAdmin中創建動態表單
看來你可以創建一個成員動作,但是這是創建的資源。在我的情況下,我需要在尚未創建的資源上創建多個條目。
嗨,我很堅持在活動管理中構建自定義表單。我已經想通了,甚至使用活動管理員設置自己的自定義表單。不過,我需要在這裏創建一個動態表單。這涉及到進行一些Ajax調用並返回用戶填寫表單的部分內容。在ActiveAdmin中創建動態表單
看來你可以創建一個成員動作,但是這是創建的資源。在我的情況下,我需要在尚未創建的資源上創建多個條目。
這可能會讓你開始。一種方法可能是你的Ajax路由添加到config.routes(只是一些隨機的示例代碼):
match '/admin/search/authors' => 'admin/articles#search_authors', :via => 'post', :as => :admin_search_authors
然後在正確的寄存器塊,在這種情況下,應用程序/管理/ articles.rb你可以把你控制器邏輯
ActiveAdmin.register Article do
...
controller do
def search_authors
@authors = Author.find_by_query params[:query]
render :layout => false, :template => 'admin/authors/search'
end
end
end
在這種情況下,模板只是呈現一個無序列表放在窗體中。位於應用程序/視圖/管理/作家/ search.html.erb,看起來像:
<ul>
<% if @authors.count < 1 %>
<li>None</li>
<% else %>
<% @authors.each do |a| %>
<li>
<a href="#" onclick="javascript:insert_your_own_voodoo_function_here();return false;">
<%= raw a.listname %>
</a>
</li>
<% end %>
<% end %>
</ul>
您的自定義jQuery來觸發Ajax調用看起來是這樣的,這裏delayedObserver使用(感謝http://code.google.com/p/jquery-utils/wiki/DelayedObserver) :
$(function() {
$('#search_author').delayedObserver(function() {
$('#search_author').after('<img class="ajax-loader" id="ajax-loader" alt="Ajax-loader" src="/images/ajax-loader.gif">');
$.ajax({
url: '<%= admin_search_authors_path %>',
dataType: 'html',
type: 'post',
data: { query: $('#search_author').val(), authenticity_token: $('meta[name=csrf-token]').attr("content")},
success: function(data) {
$('.ajax-loader').remove();
$('#chooseauthor').html(data);
$("#artikel_edit_auteurs").effect("highlight", {}, 1500);
}
});
}, 0.5);
});
一切皆有可能。分析一下你真正需要的東西:形成partials,嵌套的形式partials?取決於選擇?也許你想要建立一個多步驟形式。祝你好運。