質問をより正確になるように書き直しました。私は銀行口座のコントローラー/モデルを持っています。
私のコントローラーには次の方法があります
def search
#@ledgeritems = Ledgeritem.where("bankaccount_id = ? and transactiondate >= ? and transactiondate < ?", params[:bankaccount_id], params[:startdate], params[:enddate])
@bankaccount = Bankaccount.find(params[:bankaccount_id])
respond_to do |format|
format.js { render :partial => "bankaccount/bankledger" }
end
end
私はこれを呼び出すために2つの試みをしました。
試行1
試行1のルート
resources :bankaccounts do
post "search"
end
これは私がレーキをするときの次のルートを示しています
bankaccount_search POST /bankaccounts/:bankaccount_id/search(.:format) bankaccounts#search
試行1を呼び出すためのJavascript
$.ajax({
type: "POST",
url: "/bankaccounts/" + bank_account_id + "/search.js",
data: $('#edit_bankaccount_' + bank_account_id).serialize(),
success: function (result, status) {
$('#bank_ledger_div').html(result);
}
});
これは私のコントローラーで正しいルートを呼び出しますが、サーバーはそれをPOSTではなくPUTと見なし、404を返します。
試行2
試行2のルート
resources :bankaccounts do
collection do
post "search"
end
end
これは私がレーキをするときの次のルートを示しています
search_bankaccounts POST /bankaccounts/search(.:format) bankaccounts#search
試行2を呼び出すためのJavascript
$.ajax({
type: "POST",
url: "/bankaccounts/search.js",
data: $('#edit_bankaccount_' + bank_account_id).serialize(),
success: function (result, status) {
$('#bank_ledger_div').html(result);
}
});
これにより、更新ルートが呼び出されますが、PUTコマンドとして表示されます。Firebugで、次の結果を伴う500エラーが表示されます
Couldn't find Bankaccount with id=search