respond_with /呈现错误的视图

时间:2012-04-04 02:57:38

标签: ruby-on-rails-3 respond-with

我试图理解为什么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

但不应该只使用respond_with @numbers

呈现js视图

1 个答案:

答案 0 :(得分:2)

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

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

您也可以通过将通话中的格式顺序切换为respond_to来获得所需的结果,因为它似乎默认为第一个,但我没有测试过。