我有一个 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/