remote true在rails2.3.8中不起作用

时间:2012-10-17 10:16:22

标签: ruby-on-rails ajax forms

我正在使用ruby 1.8.7。我刚写了一个简单的表单,使用remote true将ajax请求发送到某个动作,但它似乎没有工作!

我已经包含了jquery1.6.3.js和rails.js。表单很简单,看起来像这样:

<% form_tag("/click_button", :remote => true) do %>
  <%= text_field_tag "something" %>
  <%= submit_tag "Add" %>
<% end %>

click_button方法只渲染js

def click_button
  respond_to do |format|
    format.js
  end
end

问题在于,当我单击按钮时,没有请求在firebug的控制台中看到,而是将页面重定向到/click_button.erb并且它提供了缺少的错误模板。有人可以帮我这个吗?

[编辑] 生成的html代码如下:

<form remote="true" method="post" action="/data_management/add_configuration_data">
  <input id="something" type="text" name="something">
  <input type="submit" value="Add" name="commit">
</form>

4 个答案:

答案 0 :(得分:1)

试试这个

  <% form_remote_for :xyz, :url => {:controller => "controller-name", :action => "action-name"} do |f| %>
    <%= text_field_tag "something" %>
    <%= submit_tag "Add" %>
  <% end %>

答案 1 :(得分:1)

对于rails 2.3.8,您必须使用remote_form_forform_remote_tag代替:remote => true

<% remote_form_for("/click_button"e) do %>
  <%= text_field_tag "something" %>
  <%= submit_tag "Add" %>
<% end %>

答案 2 :(得分:1)

似乎远程处理程序未附加到表单。仔细检查

  1. 从页面链接jQuery库并确保链接正常工作。有时它会被拼错。打开源并检查它。
  2. rails.js文件从页面链接,链接正常工作。与上述相同。
  3. 在标题部分的页面中添加csrf_meta_tag标记

    <%= csrf_meta_tag %>
    

答案 3 :(得分:0)

我尝试做类似remote_true的事情,但它似乎没有用,所以我找到了一种通过javascript解决这个问题的方法。