javascript - Rails - 使用 AJAX 或重定向渲染 JavaScript

标签 javascript jquery ruby-on-rails ajax ruby-on-rails-4

我有一个 Rails 远程 form_for。出于多种原因,使用 AJAX 提交表单内容是一个更好的主意。如果保存表单时出现错误,我希望能够将 .js.erb 文件渲染到页面,该文件使用显示所有错误的部分内容更新错误 div。

如果没有错误,我希望能够重定向并显示一条即时消息。

这可能吗?

最佳答案

您可以在 Controller 方法中尝试类似的操作:

if @code
   flash[:success] = 'Success message'
   render js: "window.location = '#{path}'"
else
   flash.now[:alert] = @instance.errors.full_messages
   render partial: 'your/partial'
end

详细说明:

  • @code代表保存有关已执行模型方法的代码/信息的变量;
  • @instance代表模型实例;
  • path代表在没有错误的情况下要重定向的路径;
  • render js: <...>使用而不是 redirect_to因为你可能已经设置了 respond_to :html, :js在您的 Controller 中,因此执行重定向的唯一方法是使用 javascript,否则您将获得作为 ajax 响应重定向的完整渲染页面。
  • flash.now允许您在同一请求中访问消息(在您的情况下为错误消息),就像仅使用 flash 一样仅在下一个请求中允许。

关于javascript - Rails - 使用 AJAX 或重定向渲染 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29871743/

相关文章:

javascript - 用装饰器添加类属性

javascript - 使用 ajax 调用在 GridView 中显示评论

javascript - 通用 HTML 表单验证,首选 jQuery

ruby-on-rails - 热线/涡轮框架 : why `target: "_top "` isn' t requesting pages via fetch?

ruby-on-rails - 我应该在删除操作 : user. delete 或 user.destroy 中使用哪个?

javascript - (Koa.js) 生成器和产量基础知识

javascript - 为什么 mediaDevices.enumerateDevices 会两次列出某些设备?什么是默认值?

javascript - 使用 anchor 标记和 isinViewport 的动态面包屑

javascript - 跳出ajax循环

ruby-on-rails - 有人可以帮我理解这一行代码吗?