在Rails中为ajax请求渲染html而不是js

时间:2011-09-05 03:02:23

标签: ajax ruby-on-rails-3

我有以下控制器操作:

  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

我想渲染show.html.erb操作而不是ajax请求的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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这似乎对我有用:

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

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}