gpt4 book ai didi

javascript - 使用 AJAX 将参数传递给 Rails Controller 时出现问题

转载 作者:行者123 更新时间:2023-11-28 16:51:48 24 4
gpt4 key购买 nike

我想将 JavaScript 代码中的发布请求发送到 Ruby on Rails 中的显示操作,其中包含我想要存储在实例变量中的数据,以便我可以将其保存在 View 中的表单中并上传到我的服务器。

正如你在下面看到的,参数“base64”显示在我的rails日志中,但是当我尝试在我的 View 中调用@base64时,在获取 Controller 中的值后,它是nil。

如有任何建议,我们将不胜感激,谢谢!

查看

var full_base64 =  "data:image/jpeg;base64," + base64;

$.ajax({
data: 'base64=' + full_base64,
type: 'POST',
url: "/videos/show/<%=@video.id%>"
});

Controller

    def show
@video = Video.find(params[:id])
if params[:base64].present?
@base64 = params[:base64]
end
end

路线

将“videos/show/:id”发布到:“videos#show”

Rails 服务器日志:

Started POST "/videos/show/1" for 127.0.0.1 at 2020-01-22 12:59:40 -0600
Processing by VideosController#show as */*
Parameters: {"base64"=>"data:image/jpeg;base64,iV...
...
, "id"=>"1"}

控制台

>> 

@base64
=> nil
>>

最佳答案

如果我理解正确的话,您正在尝试将 AJAX 传递给 Controller ​​中的 show 操作。这是一个非常笼统的答案,因为您未能包含任何 HTML 代码,并且看起来您没有启动 AJAX 的按钮。但我会尽力为您指明正确的方向。您需要按照以下一般原则做一些事情:

var full_base64 =  "data:image/jpeg;base64," + base64;

$.ajax({
data: 'base64=' + full_base64,
type: 'POST',
url: "/videos/my_ajax_upload"
});

这会将您的 AJAX 调用发送到我称为 my_ajax_upload 的 Controller 方法,但您可以随意命名它。在你的 Controller 中你需要类似的东西:

def my_ajax_upload
@video.update(base_64: params[:base64])
respond_to do |format|
format.js {render :action => "base_64_response" }
end
end

这会通过保存发送到数据库的参数来响应初始 AJAX 调用,并通过调用名为 base_64_response.js.erb 的文件进行回复,该文件可能类似于:

$('#pic_upload').html('<%= escape_javascript(render :partial => 'base_64_response') %>');

它将呈现名为 base_64_response.html.erb 的 HTML 文件,该文件需要包含您希望在调用它的页面中显示的 html 代码。

<div id="pic_upload">
<%= @base64 =>
</div>

循环是加载页面 -> 做一些事情来触发对 Controller 方法的AJAX调用 -> 使用 Controller 方法处理AJAX调用 -> 渲染JS文件 -> JS文件用新的html替换页面中的div

您可能需要阅读更多有关 AJAX 在 Rails 中如何工作的信息。这个 RailsCast 可能有帮助 http://railscasts.com/episodes/136-jquery-ajax-revised?view=asciicast

关于javascript - 使用 AJAX 将参数传递给 Rails Controller 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59867236/

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