2

我试图理解为什么 respond_with/to 呈现错误的视图......

控制器

respond_to :html, :js

def get_numbers
  Rails.logger.info request.format
  @numbers = Number.all
  respond_with @numbers
end

发出 ajax 请求时,rails 日志显示格式为JS,请求格式为text/javascript,但它呈现 html 视图。

日志

Started GET "/numbers/get_numbers?_=1333564838110" for 127.0.0.1 at 2012-04-04 11:40:38 -0700
Processing by NumbersController#get_numbers as JS
  ...
text/javascript
  Rendered numbers/get_numbers.html.haml within layouts/application (106.4ms)

我有一个get_numbers.html.haml&get_numbers.js.coffee视图views/numbers

我可以通过执行以下操作来呈现正确的视图:

respond_with @numbers do |format|
  format.js {}
end

但它不应该只用渲染js视图吗respond_with @numbers

4

1 回答 1

2

如果您希望在未明确指定格式时响应为 JavaScript(意味着没有.html.js在 URL 中),您可以在路由中设置默认格式参数:

match '/numbers/get_numbers(.:format)' => 'numbers#get_numbers', :defaults => { :format => :js }

您还可以通过将调用中的格式顺序切换为 来获得所需的结果respond_to,因为它似乎默认为第一个,但我尚未对此进行测试。

于 2012-04-04T18:52:08.677 回答