Jquery 如何从rails中的控制器调用方法?
如何从我的r\U控制器调用方法 下面是我编写脚本的尝试,但它不起作用Jquery 如何从rails中的控制器调用方法?,jquery,ruby-on-rails,ruby,ajax,Jquery,Ruby On Rails,Ruby,Ajax,如何从我的r\U控制器调用方法 下面是我编写脚本的尝试,但它不起作用 $(function () { $('#toright').click(function () { var sel = document.getElementById("left"); var len = sel.options.length; var w_id = this.getAttribute('w_id');
$(function () {
$('#toright').click(function () {
var sel = document.getElementById("left");
var len = sel.options.length;
var w_id = this.getAttribute('w_id');
for (var i = 0; i < len; i++)
{
if(sel.options[i].selected)
{
$.ajax("/r_holidays/w_destroy", {holiday_id: sel.options[i].value, group_id: w_id}).done(function(data){});
}
}
history.go(0);
})
});
编辑:
这是我的控制器代码:
class RHolidaysController < ApplicationController
before_action :set_r_holiday, only: [:show, :edit, :update, :destroy]
def index
@r_holidays = RHoliday.all
end
def new
@r_holiday = RHoliday.new
end
def edit
end
def create
render json: RHoliday.find_or_create(holiday_id: params[:holiday_id].to_s, group_id: params[:group_id].to_s)
end
def w_create
@r_holiday = RHoliday.new(r_holiday_params)
respond_to do |format|
if @r_holiday.save
format.html { redirect_to @r_holiday, notice: 'RHoliday was successfully created.' }
format.json { render action: 'show', status: :created, location: @r_holiday }
else
format.html { render action: 'new' }
format.json { render json: @r_holiday.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @r_holiday.update(holiday_params)
format.html { redirect_to @r_holiday, notice: 'RHoliday was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @r_holiday.errors, status: :unprocessable_entity }
end
end
end
def destroy
@r_holiday.destroy
respond_to do |format|
format.html { redirect_to holidays_url }
format.json { head :no_content }
end
end
def w_destroy
render json: RHoliday.where(holiday_id: params[:holiday_id].to_s, group_id: params[:group_id].to_s).destroy
end
private
def set_holiday
@r_holiday = RHoliday.find(params[:id])
end
def holiday_params
params.require(:r_holiday).permit(:holiday_id, :group_id)
end
end
class RHolidaysController
而my routes.rb中的相关行只是参考资料:r\u holidays
我认为您在使用语法
尝试用$替换您的$。ajax
。get
我认为您正在使用语法
尝试用
$替换$。ajax
。get
您的代码似乎是正确的,但这里缺少一点
您可以注意到您的控制器接收诸如GET、POST、PUT和DELETE之类的请求。这意味着.ajax方法应该指定您发送的请求的类型
如果要调用r_holidays控制器的销毁操作,请尝试以下smth:
$.ajax("/r_holidays", type: 'DELETE', {holiday_id: sel.options[i].value, group_id: w_id}).done(function(data){});
希望这有帮助 您的代码似乎是正确的,但这里缺少一点 您可以注意到您的控制器接收诸如GET、POST、PUT和DELETE之类的请求。这意味着.ajax方法应该指定您发送的请求的类型 如果要调用r_holidays控制器的销毁操作,请尝试以下smth:
$.ajax("/r_holidays", type: 'DELETE', {holiday_id: sel.options[i].value, group_id: w_id}).done(function(data){});
希望这有帮助 Chowlett的答案对于GET和POST是正确的-将“ajax”替换为“GET”/“POST”。或者通过传递设置对象来使用完整的“ajax”语法:。请注意,浏览器通过AJAX支持PUT和DELETE方法的历史值得怀疑,正如jQuery.ajaxapi文档中关于“type”设置所说的那样 如果您的后端支持通过POST进行HTTP方法模拟,就像Rails一样,我已经为此编写了一个jQuery插件,其中包含方便的$.put、$.patch和$.delete方法:
看看 Chowlett的答案对于GET和POST是正确的-将“ajax”替换为“GET”/“POST”。或者通过传递设置对象来使用完整的“ajax”语法:。请注意,浏览器通过AJAX支持PUT和DELETE方法的历史值得怀疑,正如jQuery.ajaxapi文档中关于“type”设置所说的那样
$.ajax({
url: "/r_holidays/w_destroy",
dataType: 'html',
data: {
holiday_id: sel.options[i].value,
group_id: w_id
},
})
.done(function() {
console.log("success");
});
如果您的后端支持通过POST进行HTTP方法模拟,就像Rails一样,我已经为此编写了一个jQuery插件,其中包含方便的$.put、$.patch和$.delete方法:
看看
$.ajax({
url: "/r_holidays/w_destroy",
dataType: 'html',
data: {
holiday_id: sel.options[i].value,
group_id: w_id
},
})
.done(function() {
console.log("success");
});
您需要传递要删除的记录的ID。然后它将从url调用方法,您可以在方法中找到您从$.ajax传递数据的记录
url: "/r_holidays/:id/w_destroy" I think you need to pass a Id here.
var my_url = "/rholidays/" + <%= @object.id %> + "/w_destroy";
pass my_url as url: my_url, in $.ajax
这样你就可以破坏这个方法。或者rails提供了最佳ajax方法(Rjs)。你为什么不试试呢
您需要传递要删除的记录的ID。然后它将从url调用方法,您可以在方法中找到您从$.ajax传递数据的记录
url: "/r_holidays/:id/w_destroy" I think you need to pass a Id here.
var my_url = "/rholidays/" + <%= @object.id %> + "/w_destroy";
pass my_url as url: my_url, in $.ajax
这样你就可以破坏这个方法。或者rails提供了最佳ajax方法(Rjs)。你为什么不试试呢?谢谢!我试过了,但没用。我正在尝试这样做,用于创建/销毁表中的行。但是它不起作用。您的操作是否可以通过GET路径访问,或者仅通过POST/PUT/DELETE访问?$。GET将按照GET路径访问您需要使用
DELETE
方法调用的r\u holidays\show
谢谢!我试过了,但没用。我正在尝试这样做,用于创建/销毁表中的行。但是它不起作用。您的操作可以通过GET路由访问,还是仅通过POST/PUT/DELETE访问?$。GET将按照GET路由执行哪些路由到r\u holidays\show
您需要使用DELETE
方法调用。我们可以查看控制器代码和路由的相关部分吗?rb?您是否在路由文件中添加了w\u destroy操作?我没有。我必须在哪里添加它?我刚刚在我的routes.rb中添加了资源:r_假日。我还需要在那里添加什么?我们可以看到控制器代码和routes.rb的相关部分吗?你在你的routes文件中添加了w_destroy操作吗?我没有。我必须在哪里添加它?我刚刚在我的routes.rb中添加了资源:r_假日。我还需要在那里添加什么?当我添加这一行时,由于类型:“DELETE”,我得到一个语法错误。这正常吗?当我添加这一行时,由于类型:“DELETE”,我得到一个语法错误。这正常吗?