有这个链接:
= link_to "Close", close_ticket_path(:id => ticket.id), :onclick => $(this).closest('tr').remove()", :remote => true
路由到tickets_controller#close:
def close
@ticket = Ticket.find(params[:id]).update_attribute(:status, "closed")
end
默认情况下,此操作会重定向到views/tickets/close
。 如何禁用此默认重定向?我知道如何指定自定义重定向,但这不是我需要的。视图由脚本管理,并且在操作中修改了db,因此不再需要操作,我不希望页面刷新。 render
也不会有效,因为有问题的内容是动态加载的,所以基本上什么都不是我需要的。
我发现这种解决方法是包含respond_to :js
并创建空close.js.erb
文件,或将:onclick
移到此文件之上,但我想以惯用方式执行此操作。事实上,链接现在可以根据需要使用动作中的respond_to :js
(此处未包含),但是控制台会抛出Missing模板错误,这不是很好。我查看了Rails Redirecting,JS with Rails,Rendering guide等等,但无济于事。
答案 0 :(得分:1)
试试这个:
def close
@ticket = Ticket.find(params[:id]).update_attribute(:status, "closed")
render nothing: true, :status => 200
end
答案 1 :(得分:0)
实际上,在reading this之后,我必须正义并发布正式推荐的处理此案的方法。该行动应为:
def close
@ticket = Ticket.find(params[:id]).update_attribute(:status, "closed")
head :ok
end
谢谢你,@ auL5agoi,带我回答这个问题。