我正在构建一个Rails应用程序,我需要在JS事件中从我的一个控制器触发一个Update操作。
我的控制器的操作目前看起来像这样:
def update
@subscription = Subscription.find(params[:id])
authorize @subscription
@subscription.update(subscription_params)
redirect_to tournament_subscriptions_path(@subscription.tournament)
end
我想要做的是在JS事件上触发该操作:说当前用户在选择框中选择新值。 我相信这是用Ajax post方法完成的?但由于我是编程新手,我不知道如何实现它......
我猜有些JS看起来像这样:
$(document).ready(function() {
$("#subscription-status").change(function(){
$.post(?????);
});
});
});
答案 0 :(得分:0)
您需要确定哪条路由导致该操作(您没有提供此信息,因此我们无法提供帮助)然后匹配该路由的URL,然后通过AJAX访问该URL(使用适当的http方法)
如果路线为posts#update
并且PUT
访问/posts/:id
,则可以执行以下操作:
$.post("/posts/" + id, { _method: 'put' });
答案 1 :(得分:0)
$(document).ready(function() {
$("#subscription-status").change(function(){
$.ajax({url: "subscription-status", type: "POST"}
您必须添加config/routes.rb
:
post '/subscription-status', to: 'controller-name#update'
$.ajax
电话还会采用其他选项:
dataType: "json",
data: { file_name: $(this).text() }, // This goes to Controller in params hash, i.e. params[:file_name]
complete: function() {},
success: function(data, textStatus, xhr) {},
error: function() { alert("Ajax error!") }