gpt4 book ai didi

javascript - 如何将参数传递给 Rails Controller 方法然后使用 JQuery/AJAX 返回值?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:29 25 4
gpt4 key购买 nike

我正在使用点击功能首先获取数组/位置,然后通过对 Controller 方法的 AJAX 调用将其发布。然后我希望该方法返回一个 bool 值以在 jquery 函数中启用 addClass。控制台一直抛出 500 服务器错误。

这是 .js 文件:

   $(document).ready(function(){
$("#backboard").on("click", "div", function(e){
$("#backboard div").removeClass("selected");
var val = $(this).data('val');
$.ajax ({
type: 'POST',
url: "https://localhost:3000/chess/:pos",
data: {pos: {value: val}},
success: function(d){
if(d === true){
$(this).addClass("selected").append("<p>"+val+"<p>");
}
}
});
});
});

这里是 controller.rb 文件:

 class ChessController < ApplicationController
include ChessHelper

def new
@select = false
@game = Game.new("white", "ARSEFACE!!!")
@arr = @game.board
@cpu = @game.cpuName
@player = @game.playerName



end

def select
pos = params[:pos]
a = pos[0]
b = pos[1]

if(@arr[a][b][0]===@color)
@select = !@select
end

respond_to do |format|
format.json { render json: @select }
end
end
end

这是 config/routes.rb:

   get '/chess', to: 'chess#new'
post '/chess/:pos' => 'chess#select'

我知道我可能在这里遗漏了一些非常明显的东西,但我们将不胜感激!

PS 和从标签中获取数据的 val 变量实际上有一个值。我试图将该值传递给 Controller ​​以返回 true 或 false,一旦我解决了这个基本问题,它最终将成为一个验证函数。

最佳答案

url: "https://localhost:3000/chess/:pos", 不会被插入,除非我完全遗漏了一些东西。

使用 post '/chess/:pos' => 'chess#select' 你告诉 Rails(特别是它的路由器)在请求路径中的位置寻找一个参数:pos,当它找到它时,将 params 散列值(在 params[:pos])设置为 :pos 在路径中。

jQuery 对 Rails 的路由器一无所知。 Javascript 也没有。

要明白我的意思,请将此添加到您的 routes.rb 文件中:

获取 '/:cookies/and/:cream' => 'application#test'

application_controller.rb 中,添加以下内容:

def test
render :text => "I love me some #{params[:cookies]} with my #{params[:cream]}"
end

然后点击http://localhost:3000/chocolate-chip/and/milk

应该读作“我爱我的牛奶巧克力片”

现在,假设您的其他代码没问题,

$("#backboard").on("click", "div", function(e){
$("#backboard div").removeClass("selected");
var val = $(this).data('val');
$.ajax ({
type: 'POST',
url: "http://localhost:3000/chess/" + val,
success: function(d){
if(d === true){
$(this).addClass("selected").append("<p>"+val+"<p>");
}
}
});

应该这样做。无需在 ajax 函数中传递任何额外的 data

另外,不要在开发中使用 HTTPS。这只会让你头疼。

关于javascript - 如何将参数传递给 Rails Controller 方法然后使用 JQuery/AJAX 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com