gpt4 book ai didi

ruby-on-rails - 在 Rails 上获取状态 : code on ajax response in a . js.erb 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:01 25 4
gpt4 key购买 nike

我刚开始玩 Rails 应用程序,我想在表单上使用 Ajax,但我不知道如何在 js.erb 文件中捕获状态代码。我正在学习本教程:http://guides.rubyonrails.org/working_with_javascript_in_rails.html

在我的用户 Controller 上,我有更新方法的代码:

respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.js {}
format.json { render json: @user, status: :created, location: @user}
else
format.html { render action: 'edit' }
format.js {}
format.json { render json: @user, status: :unprocessable_entity }
logger.debug @user.response_errors
end
end

我在我的 views/users/文件夹中创建了一个 update.js.erb 文件,并且很容易调试 @user var,但我不知道如何在我的方法中设置状态代码。

很抱歉,如果这是一个愚蠢的问题,但我是 Rails 的新手,我正在努力严格遵循所有框架概念,但我不知道创建对 Ajax 请求的响应的最佳实践。

我想要实现的是这样的:

#on my update.js.erb
if( status == 'created' ) {
alert( 'Ok, created' )
} else {
alert( 'Something wrong happened' )
}

感谢任何帮助。

最佳答案

选项 1:在 update.js.erb 中检查有效性

这是我在大多数情况下推荐的选项。

update.js.erb 是一个 ERB 模板,其结果是要在客户端上评估的 JavaScript 代码。在这种情况下,您可以使其看起来像:

<% if @user.valid? %>
alert('Ok, created');
<% else %>
alert('Something wrong happened');
<% end %>

显示哪个警报的决定发生在服务器端。客户端接收:

alert('Ok, create');

alert('Something wrong happened');

取决于 @user 的状态。

选项 2:两个单独的 js.erb 文件

您可以将update.js.erb 分成两个文件。 update.js.erb 应该包含快乐路径代码:

alert('Ok, create');

update-error.js.erb 应该包含一些错误处理:

alert('Something wrong happened');

然后您决定在您的 Controller 中显示哪一个:

respond_to do |format|
if @user.save
# ...
format.js {}
# ...
else
# ...
format.js { render 'update-error' }
# ...
end
end

关于ruby-on-rails - 在 Rails 上获取状态 : code on ajax response in a . js.erb 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41411378/

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