【问题标题】:Rails - render JavaScript with AJAX or redirectRails - 使用 AJAX 渲染 JavaScript 或重定向
【发布时间】:2015-07-04 11:44:57
【问题描述】:

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

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

这可能吗?

【问题讨论】:

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


    【解决方案1】:

    你可以在你的控制器方法中尝试这样的事情:

    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 仅允许在下一个请求中访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 2012-04-13
      • 2011-06-13
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多