Ruby on rails 表单不作为JS处理

Ruby on rails 表单不作为JS处理,ruby-on-rails,Ruby On Rails,因此,我有以下rails表单,相应的控制器动作有respond_to:js,但rails一直将其作为HTML处理。我真的不知道该怎么做。有什么想法吗 form_tag url_for(controller: 'posts', action: 'add_tag'), id: 'enter_tag', remote: true, style: 'display:none' do text_field_tag :tag end 更新:删除“display:none”修复了它(我正在让表单淡入)。

因此,我有以下rails表单,相应的控制器动作有respond_to:js,但rails一直将其作为HTML处理。我真的不知道该怎么做。有什么想法吗

form_tag url_for(controller: 'posts', action: 'add_tag'), id: 'enter_tag', remote: true, style: 'display:none' do
  text_field_tag :tag
end

更新:删除“display:none”修复了它(我正在让表单淡入)。这是为什么?

克里斯,你在使用Rails 3.1吗?如果是这样,(我相信,我仍然使用3.0.10)jQueryUJS库会自动被包含。如果是这种情况,它应该使用/datatype请求,但我相信rails应该注意到这是一个xhr请求,并自动将其发送到JS响应

一个快速的解决方案可能是将的
url\u更改为
url\u(controller:posts,action:'add\u tag',format:'js')
,但我相信即使没有它也应该选择js响应。但我不喜欢这种方法,因为我不相信它会为非js用户选择HTML响应


另一个修复方法可能是将
format.js
作为控制器中的第一个响应格式(现在可能是HTML),但我“我不明白为什么它不首先将其识别为Ajax请求?

我认为您需要使用form\u remote\u标记而不是form\u标记。你能试一下吗?
form\u remote\u tag
在更新版本的rails中被弃用,:remote=>true是你现在应该使用的选项。好的,所以去掉“display:none”修复了它(我正在使用表单淡入)wtf:P