我已将我的问题重写为更准确。我有一个bankaccounts控制器/模型。将自定义路由添加到控制器时出错
我有我的控制器
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
我已经做了两个尝试调用此以下方法。
尝试1
路线的尝试1
resources :bankaccounts do
post "search"
end
这显示了以下路线,当我做耙子
bankaccount_search POST /bankaccounts/:bankaccount_id/search(.:format) bankaccounts#search
的Javascript调用尝试1
$.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);
}
});
这就要求我的控制器上的正确的路线,但服务器将其视为一个PUT而不是POST,并返回一个404
尝试2
路线的尝试2
resources :bankaccounts do
collection do
post "search"
end
end
这显示了以下路线,当我做耙子
search_bankaccounts POST /bankaccounts/search(.:format) bankaccounts#search
的Javascript FO r呼叫尝试2
$.ajax({
type: "POST",
url: "/bankaccounts/search.js",
data: $('#edit_bankaccount_' + bank_account_id).serialize(),
success: function (result, status) {
$('#bank_ledger_div').html(result);
}
});
这将调用更新路由,但仍显示为PUT命令。在萤火虫我看到一个500错误结果如下
Couldn't find Bankaccount with id=search
你打了什么网址? – Swards
我用Firebug检查它,发现它是一个设置为localhost的帖子:3000/bankaccounts/search – Jhorra