2014-12-06 53 views
0

有此鏈接:取消默認的控制器行動的重定向

= link_to "Close", close_ticket_path(:id => ticket.id), :onclick => $(this).closest('tr').remove()", :remote => true 

其路線接近tickets_controller#:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    end 

默認情況下,這個動作會重定向到views/tickets/close如何禁用此默認重定向?我知道如何指定自定義重定向,但這不是我所需要的。視圖由腳本管理,數據庫在操作中被修改,因此不需要更多操作,我不希望頁面刷新。 render既不會工作,因爲所討論的內容是動態加載的,所以基本上沒有什麼是我需要的。

我發現此解決方法爲例如包括respond_to :js並創建空的close.js.erb文件,或者將:onclick以上的文件移動到此文件,但我想通過慣用方式進行操作。事實上,該鏈接現在可以根據需要與respond_to :js(不包括在此處)一起使用,但控制檯會拋出Missing模板錯誤,這不是很好。我看着Rails Redirecting,在JS with Rails,Rendering guide,還有一些,但無濟於事。

回答

0

其實,reading this後,我必須做正義和後期的處理這種情況下,官方推薦的方法。該行動應該是:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    head :ok 
end 

謝謝你,@ auL5agoi,爲我帶領這個答案。

1

試試這個:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    render nothing: true, :status => 200 
end 
+0

哎呀,好像我[錯過了一個地方](http://guides.rubyonrails.org/layouts_and_rendering.html#using-render)。謝謝 :) – medik 2014-12-06 21:18:53