これは、あなたを始めたかもしれません。方法はconfig.routesにあなたのAjaxのルート(ちょうどいくつかのランダムなサンプルコード)を追加することができます
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に位置しており、次のようになります。AJAX呼び出しは次のようになりますトリガするために
<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の、ここで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);
});
何かが可能です。あなたが本当に必要なものを分析するだけです:フォームパーシャル、ネストフォームパーシャル?選択に応じて?たぶん、複数のステップフォームを作成したいと思うかもしれません。がんばろう。