我试图理解为什么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
答案 0 :(得分:2)
如果您希望在没有明确指定格式时(即URL中没有.html
或.js
),则响应为JavaScript,您可以在路由中设置默认格式参数:
match '/numbers/get_numbers(.:format)' => 'numbers#get_numbers', :defaults => { :format => :js }
您也可以通过将通话中的格式顺序切换为respond_to
来获得所需的结果,因为它似乎默认为第一个,但我没有测试过。