2011-10-04 40 views
0

我嘗試爲項目使用pjax-rails gem。帶導軌的pjax 3.1 redirect_pjax_to只呈現文本

當我從寶石中使用重定向方法。瀏覽器將響應呈現爲文本。 我asume文本/ JavaScript而不是腳本/ JavaScript。

這是怎麼了我的控制器的外觀(通知redirect_to_pjax):

def create 
@contact = Contact.new params[:contact] 
if @contact.save 
    flash[:notice] = "Successfully added contact" 
    redirect_pjax_to :show,@contact 
end 

這是創業板https://github.com/rails/pjax_rails

這是原來實行的方法「redirect_pjax_to」 的,我認爲魔術在這裏發生。 ...(取自github)

private 
def redirect_pjax_to(action, url = nil) 
    new_url = url_for(url ? url : { action: action }) 

    render js: <<-EJS 
    if (!window.history || !window.history.pushState) { 
     window.location.href = '#{new_url}'; 
    } else { 
     $('[data-pjax-container]').html(#{render_to_string("#{action}.html.erb", layout: false).to_json}); 
     $(document).trigger('end.pjax'); 

     var title = $.trim($('[data-pjax-container]').find('title').remove().text()); 
     if (title) document.title = title; 
     window.history.pushState({}, document.title, '#{new_url}'); 
    } 
    EJS 
end 

我asume渲染:js在這裏需要一個content_type ...

有沒有人有同樣的問題?還是更好的解決方案?

回答

0

您能否看到您是否進行了AJAX調用?如果你從一個input元素創建而不是anchor元素,我認爲pjax不會被觸發

我在我的Rails應用中使用PJAX,只需檢查PJAX的HTTP請求頭,然後渲染:layout false。奇蹟般有效。

+0

我可以使用沒有問題的鏈接。當我在pjax-rails gem附帶的控制器中使用redirect_pjax_to方法時。這個方法是eq。爲redirect_to只是與ajax/pjax。 –