我正在调用一个控制器操作,使用来自2个不同页面的AJAX请求进行搜索,并希望根据请求操作的页面呈现不同的rjs文件。我可以做两个动作来执行此操作,但是当动作中的相同代码需要不同的rj时它看起来并不是很干,因为它在视图中以不同的方式显示搜索结果。
使用Rails 2.3.4和Ruby 1.8.7
答案 0 :(得分:3)
如果我理解你的问题,可以通过三种方式来解决这个问题:
http_referrer
并尝试找出发起请求的页面。根据您设置路由的方式,这可能会或可能不会起作用,但它确实具有非常简单的优势。我倾向于方法#2,因为当你的路由改变时,似乎不太可能随意破坏,#3让我觉得过于复杂。可能还有一百万种其他方法可以做到这一点,但这些是三种让人想到的。希望有所帮助...
答案 1 :(得分:1)
行动中有多少代码?您可以将其分解为一个公共子例程,并从每个操作中调用它。它可以使代码简单易懂,而无需采用巧妙的技巧。
答案 2 :(得分:0)
我通常喜欢史蒂文的回答#2,但有一点扭曲。 ApplicationController中的过滤器属性对应于额外参数的自定义mime类型。
这样,我的视图文件的名称就更清楚了(即:“show.employees-autocomplete.rjs”,“show.quotation-autofill.rjs”)。