Rails 3.0 form_tag w / remote错误接受:标题

时间:2012-02-29 05:47:25

标签: jquery ruby-on-rails ajax ruby-on-rails-3 http

我刚刚在新机器上安装了一个rails 3.0.3项目,我得到了一些与form_tag相关的怪异行为:remote =>真正。似乎在请求中设置了错误的Accept标头,因此它不是作为AJAX / JS请求而是来自HTML请求。在我的生产服务器上,正确设置了Accept标头:

Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript

规格:

ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]
Rails 3.0.3

然而,在我正在设置的新机器上它看起来像这样:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

规格:

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
Rails 3.0.3

这是用于生成表单的代码(在_request.html.erb中)

<div id='request-translation'>
  <h2 class="tr-req left"><%= t( 'user.translation_requests.request' ) %></h2>
  <%= form_tag( request_translation_artist_song_path( @artist, @song ),
           :method => :post,
           :remote => true,
           :class => 'left',
           :style => 'margin-left: 20px;' ) %>
    <%= languages_combobox_large( @into_languages, 'language_id' ).html_safe %> 
  </form>
</div>

当然在我的控制器中我只响应format.js,但请求以format.html的形式出现。我想:remote =&gt;真的照顾了这一点。生成的表单HTML也很好看:

<form accept-charset="UTF-8" action="/xxx/request_translation" class="left" data-remote="true" format="js" method="post" style="margin-left: 20px">

1 个答案:

答案 0 :(得分:1)

请确保您在HTML标头中包含 jquery.js 以及* jquery_ujs.js *。

jquery_ujs负责通过AJAX发送已设置数据远程属性的表单。由于它不引人注目,因此表单也可以在没有它的情况下工作。但它是通过正常的页面请求发送的。