Ruby on rails 3 用/对呈现错误视图作出响应

Ruby on rails 3 用/对呈现错误视图作出响应,ruby-on-rails-3,respond-with,Ruby On Rails 3,Respond With,我试图理解为什么Response_with/to呈现了错误的视图 控制器 发出ajax请求时,rails日志显示格式为JS,请求格式为text/javascript,但它呈现html视图 日志 我在views/numbers中有get_numbers.html.haml和get_numbers.js.coffee视图 我可以通过执行以下操作来呈现正确的视图: respond_with @numbers do |format| format.js {} end 但是,如果您希望在没有明确指定

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

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

日志 我在
views/numbers
中有
get_numbers.html.haml
get_numbers.js.coffee
视图

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

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

但是,如果您希望在没有明确指定格式(表示URL中没有
.html
.js
)的情况下响应为JavaScript,那么您可以在路由中设置默认格式参数:

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

您还可以通过将调用中的格式顺序切换到
respond\u to
,来获得所需的结果,因为它似乎默认为第一种格式,但我还没有对此进行测试。

当您只需要js时,为什么还要使用html呢。respond_to块中的语法在我看来也不太可读。更改它以满足您的特定需要。im同时使用html和js。我不知道你说的是什么意思。我从示例中删除了:only选项,因为它与问题无关。顺便说一句,这是一个人为的例子。你能发布相关的路由以及你的Gemfile.lock吗?在你的控制器中,你告诉它用html或js响应,这将在你在Ajax请求中请求时确定。检查AJAX请求中所要求的格式,并在那里进行一些调试。同时检查@mosch所说的相关路由。ajax请求格式正确(text/javascript),路由设置正确(GET numbers#GET_numbers)。更新帖子以显示GET请求。就是这样!虽然我没有在我的路线上设置默认格式,而是在url上设置,但这是问题所在…而且。。。为什么rails不能将适当的响应与request.format匹配?恐怕我真的不知道。日志显示它的响应为
JS
,但呈现的是HTML模板,这似乎很奇怪。如果你能得到一个最小的可重复案例。
respond_with @numbers do |format|
  format.js {}
end
match '/numbers/get_numbers(.:format)' => 'numbers#get_numbers', :defaults => { :format => :js }