【问题标题】:Rails 3 Remote Form Ajax SuccessRails 3 远程表单 Ajax 成功
【发布时间】:2013-06-03 16:42:53
【问题描述】:

我在弄清楚如何使用 rails 3 ujs ajax 在我的条目表单上处理成功时遇到了一些问题。

如果有错误,我有一个 create.js.erb,它会 alert(j(@entry.errors.full_messages),这很有效。但是如果没有错误,表单不会重定向(因为我在对话框中呈现),我希望 js 发出警报(“成功”)并关闭对话框。 (使用fancybox 2)。

你能给我一些使用 rails 3 ujs 和 ajax 的建议吗?

【问题讨论】:

    标签: ruby-on-rails-3 ujs


    【解决方案1】:

    一种方法是在控制器级别而不是视图级别识别和处理错误。

    def create
      @entry = something
      if @entry.save
        @notice = "Success message!"
        respond_to :js # render default create.js.erb
      else
        respond_to :js { render 'create_error.js.erb' }
      end
    end
    
    // create.js.erb
    $("#dialog").close();
    alert("<%= @notice %>">;
    
    // create_error.js.erb
    alert(j(@entry.errors.full_messages);
    

    【讨论】:

    • 一个更好的fancybox关闭是$.fancybox.close(); :)
    • @KevinBrown,实际上我根本不知道方法:) 这只是在不同模板上显示不同操作的示例。
    • @KevinBrown,也许alert只是你的示例方法,你可以使用更友好的方法,如show()fadeIn()等。不管它们是什么,在实际情况下它们更好成为close()的回调方法,在对话关闭后触发。
    • 确实,比利。感谢您的及时答复!也许您可以扩展至rails 3 的responding_to :js, :html, :json 方式,每个都有独立的参数?
    • 嗨@BillyChan,我注意到使用ujs时不会为新元素触发的:成功和:完成回调,这种方法可以替代这个问题吗?
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2011-04-30
    相关资源
    最近更新 更多