gpt4 book ai didi

javascript - 如何在 ruby​​ on rails 中对 onclick-javascript 调用操作

转载 作者:行者123 更新时间:2023-11-30 17:46:02 25 4
gpt4 key购买 nike

我想在 controllers/static_pages_controller.rb 文件中执行一个 Action :

def fileopen
my_file = File.new("public/CHNAME1.txt","w")
my_file.write "\tfasf"
my_file.close

end

(当我在 helper 中定义它并在 View 中调用它时,它工作得很好。)

在 myview.html.erb 中,我想要类似 <button id="button" onclick="readfile()" /> 的东西我怎样才能做到这一点?我在 application.js 中尝试过

function readfile() {
alert('readfile work')
$.ajax({
alert('ajax work')
url: "/fileopen",
type: "POST",
##don't know what to do to make fileopen work
}
});
}

路线.rb

 match '/fileopen', to:'static_pages#fileopen', via: 'get'

似乎什么都没发生。只有第一个警报有效。

最佳答案

直接回答您的问题,您必须能够在 Controller 中处理 JS 请求。这通常是通过使用 respond_to 来完成的。在 Rails 中阻止,像这样:

def fileopen
respond_to do |format|
format.js {
my_file = File.new("public/CHNAME1.txt","w")
my_file.write "\tfasf"
my_file.close
}
end
end

此代码可能会给您当前代码的某种响应,但您可能需要更好地理解 Ajax 是如何实现的。 & Rails 的工作是为了更好地帮助你


Ajax 的工作原理

Ajax 是一种 javascript 技术,它向您网站上的其他页面发送“异步”请求。就其本质而言,异步请求是完全独立于您的主要 HTTP 请求完成的,并且基本上就像一个“伪”浏览器——在后台工作

Ajax 用于从启用 JS 的数据中提取数据 endpoints (这是用 Rails 中的 respond_to 函数处理的,然后您可以使用它以某种方式修改您的页面。很多人对 Ajax 感到困惑,但它实际上非常简单——它只是 javascript它从另一个页面提取数据,允许您使用该数据操作您的页面


在您的 View 中使用 Ajax

这对您很重要的原因是因为您提到您不知道如何处理应用程序的 success 回调。希望我的解释能告诉您 $.ajax 调用的成功部分应该用于附加您从页面上的 Controller 接收的数据

这可以通过以下方式完成:

$("#button").click(function() {
$.ajax({
url: "/static_pages/fileopen",
type: "POST",
data: {name: $(this).val()},
success: function (data) {
// append data to your page
$("page_element").html(data);
}
});
});

关于javascript - 如何在 ruby​​ on rails 中对 onclick-javascript 调用操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141000/

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