rails3 + jquery - 根据请求的来源,在ajax请求上表现不同

时间:2011-06-26 19:05:31

标签: jquery ajax ruby-on-rails-3

我的应用有很多组织。每个组织都允许用户加入/离开组织。如果最后一个人离开组织,组织将自动销毁。

我想通过ajax处理加入/离开请求。加入/离开可以从两个地方发生:列出所有组织的索引视图和描述特定组织的show视图。

问题是我希望我的leave.js.erb文件中的逻辑根据点击保留按钮的位置而有所不同。如果请假请求来自show视图(假设这会破坏组织),那么我希望将用户重定向到索引视图。如果请假请求来自索引视图(假设这会破坏组织),我只想在索引视图中删除网络的html。

实现这一目标的最简洁方法是什么?我可以通过将一个额外的参数传递给包含“source”的leave请求并在我的控制器logic / leave.js.erb文件中使用这个“source”来考虑迂回方式。不确定这是不是最好的方法。另外,如果这是推荐的方式,那么在渲染离开按钮时如何获得“来源”?

感谢。

2 个答案:

答案 0 :(得分:0)

好的,您最好使用以下方法检查请求的来源:

request.referer

在您的控制器中。

答案 1 :(得分:0)

IMO最简单的方法是有两个动作,index_leave和show_leave,因为流程不同。这两个操作应该在User模型上调用名为leave_organization的模型方法,以便代码保持DRY。

我认为您尝试过只有一个操作而不是两个操作,因为您将Web服务器的API视为数据存储API而不是应用程序控制器API。如果要将Web服务器用作数据存储,则需要在客户端实现控制器逻辑(即,您不应该依赖于控制器逻辑的leave.js.erb文件)。