【发布时间】:2015-07-04 11:44:57
【问题描述】:
我有一个 Rails 遥控器 form_for。出于多种原因,使用 AJAX 提交表单内容是一个更好的主意。如果保存表单时出现错误,我希望能够将.js.erb 文件呈现到页面,该页面使用显示所有错误的部分更新错误 div。
如果没有错误,我希望能够只重定向并显示一条消息。
这可能吗?
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4
我有一个 Rails 遥控器 form_for。出于多种原因,使用 AJAX 提交表单内容是一个更好的主意。如果保存表单时出现错误,我希望能够将.js.erb 文件呈现到页面,该页面使用显示所有错误的部分更新错误 div。
如果没有错误,我希望能够只重定向并显示一条消息。
这可能吗?
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4
你可以在你的控制器方法中尝试这样的事情:
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,因此进行重定向的唯一方法是使用javascript,否则您将获得重定向的完整呈现页面一个 ajax 响应。flash.now 允许您在同一请求中访问消息(在您的情况下为错误消息),因为仅使用 flash 仅允许在下一个请求中访问。【讨论】: