【发布时间】:2009-11-06 04:48:35
【问题描述】:
我正在调用控制器操作以使用来自 2 个不同页面的 AJAX 请求进行搜索,并希望根据请求该操作的页面呈现不同的 rjs 文件。我可以只做 2 个操作来执行此操作,但是当操作中的相同代码只需要不同的 rjs 因为它在视图中以不同方式显示搜索结果时,它看起来并不十分干燥。
使用 Rails 2.3.4 和 Ruby 1.8.7
【问题讨论】:
标签: ruby-on-rails ruby xmlhttprequest
我正在调用控制器操作以使用来自 2 个不同页面的 AJAX 请求进行搜索,并希望根据请求该操作的页面呈现不同的 rjs 文件。我可以只做 2 个操作来执行此操作,但是当操作中的相同代码只需要不同的 rjs 因为它在视图中以不同方式显示搜索结果时,它看起来并不十分干燥。
使用 Rails 2.3.4 和 Ruby 1.8.7
【问题讨论】:
标签: ruby-on-rails ruby xmlhttprequest
如果我正确理解您的问题,我想到了三种解决方法:
http_referrer 并尝试找出发起请求的页面。根据您设置路由的方式,这可能有效,也可能无效,但它确实具有操作非常简单的优点。我更喜欢方法#2,因为当你的路由发生变化时,它似乎不太可能随机中断,而#3 让我觉得过于复杂。可能还有一百万种其他方法可以做到这一点,但这些都是一开始就想到的三种方法。希望对您有所帮助...
【讨论】:
操作中有多少代码?您可以将其分解为一个公共子例程并从每个操作中调用它。这将使代码保持简单易懂,而无需使用巧妙的技巧。
【讨论】:
我通常喜欢史蒂文回答中的#2,但有一点不同。我的 ApplicationController 中的过滤器赋予了与额外参数相对应的自定义 mime 类型。
这样,我的视图文件的名称更清晰(即:“show.employees-autocomplete.rjs”、“show.quotation-autofill.rjs”)。
【讨论】: