获取状态:ajax 上的代码在 Rails 上的 .js.erb 文件中响应
Getting status: code on ajax response in a .js.erb file on Rails
我刚开始玩 Rails 应用程序,我正在尝试在表单上使用 Ajax,但我不知道如何在 js.erb 文件。我正在学习本教程:http://guides.rubyonrails.org/working_with_javascript_in_rails.html
在我的用户控制器上,我有更新方法的代码:
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' )
}
感谢任何帮助。
我会尝试做:
format.js {render json: {@user, status: :created, location: @user}}
选项 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');
然后你决定在你的控制器中显示哪一个:
respond_to do |format|
if @user.save
# ...
format.js {}
# ...
else
# ...
format.js { render 'update-error' }
# ...
end
end
我刚开始玩 Rails 应用程序,我正在尝试在表单上使用 Ajax,但我不知道如何在 js.erb 文件。我正在学习本教程:http://guides.rubyonrails.org/working_with_javascript_in_rails.html
在我的用户控制器上,我有更新方法的代码:
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' )
}
感谢任何帮助。
我会尝试做:
format.js {render json: {@user, status: :created, location: @user}}
选项 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');
然后你决定在你的控制器中显示哪一个:
respond_to do |format|
if @user.save
# ...
format.js {}
# ...
else
# ...
format.js { render 'update-error' }
# ...
end
end