【问题标题】:render html instead of js for an ajax request in Rails在 Rails 中为 ajax 请求渲染 html 而不是 js
【发布时间】:2011-11-10 08:08:33
【问题描述】:

我有以下控制器动作:

  def create
     @board = Board.new(params[:board])
      respond_to do |format|
        if @board.save
          set_board_session @board
          set_new_board
           format.js   { render :action => "show" } #<== here I want to render html no js
        else
           format.js  { render :action => "new" }
        end
      end
  end

我想为 ajax 请求呈现 show.html.erb 动作而不是 show.js.erb 动作。

我该怎么做?

更新

这似乎对我有用:

我把它放在我的应用程序控制器中:

def redirect_to(options = {}, response_status = {})
      if request.xhr?
        render(:show) {|page| page.redirect_to(options)}
      else
        super(options, response_status)
      end
    end

现在我可以使用 Ajax 调用重定向。

 format.js {redirect_to @board}

感谢forum

【问题讨论】:

  • 这个问题有帮助吗? stackoverflow.com/questions/339130/…
  • 谢谢斯派克。不完全是我想要的。我想为 AJAX 请求渲染一个 html 页面而不是 js 页面。
  • 关于使用 :file 给出完整文件名的建议不起作用?我的测试似乎有效 (:file => "controller/show.html.erb")
  • 我确信它有效。我只是认为我正在寻找的更像是我发布的解决方案。我也会试试你的建议。

标签: ajax ruby-on-rails-3


【解决方案1】:

在您的 AJAX 请求中将 dataType 设置为“html”,Rails 将正确处理 AJAX 请求并呈现 html,而不是 js。

【讨论】:

  • 天哪,我会试试的。谢谢德米特里
  • 知道如何在 Rails 表单上设置 dataType 吗?
  • 很好,但就我而言,我希望使用 ajax 提交表单。如果有错误,然后做一些 jquery 的东西。如果没有,则重定向到显示页面。更改 dataType 不会让我有两种行为,就像我上面发布的方法一样。
【解决方案2】:

这似乎对我有用:

我把它放在我的应用程序控制器中:

def redirect_to(options = {}, response_status = {})
      if request.xhr?
        render(:show) {|page| page.redirect_to(options)}
      else
        super(options, response_status)
      end
    end

现在我可以使用 Ajax 调用重定向。

 format.js {redirect_to @board}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多