0

有这个链接:

= 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. 如何禁用此默认重定向?我知道如何指定自定义重定向,但这不是我需要的。视图由脚本管理,数据库在操作中被修改,因此不需要更多操作,我不希望页面刷新。render也不会工作,因为有问题的内容是动态加载的,所以基本上什么都不做是我需要的。

我找到了这个解决方法,例如包含respond_to :js并创建空close.js.erb文件,或者移动:onclick到这个文件,但我想习惯性地这样做。事实上,该链接现在可以respond_to :js在操作中按需要正常工作(此处不包括在内),但控制台会抛出 Missing template 错误,这不是很好。我查看了Rails RedirectingJS with RailsRendering guide等等,但无济于事。

4

2 回答 2

1

尝试这个:

def close
  @ticket  = Ticket.find(params[:id]).update_attribute(:status, "closed")
  render nothing: true, :status => 200
end
于 2014-12-06T20:24:14.937 回答
0

其实,看完这篇,我一定要伸张正义,把官方推荐的处理这个案子的方法贴出来。动作应为:

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

谢谢@auL5agoi 引导我回答这个问题。

于 2014-12-06T21:48:29.567 回答