我正在使用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>
答案 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_for
或form_remote_tag
代替:remote => true
<% remote_form_for("/click_button"e) do %>
<%= text_field_tag "something" %>
<%= submit_tag "Add" %>
<% end %>
答案 2 :(得分:1)
似乎远程处理程序未附加到表单。仔细检查
在标题部分的页面中添加csrf_meta_tag
标记
<%= csrf_meta_tag %>
答案 3 :(得分:0)
我尝试做类似remote_true的事情,但它似乎没有用,所以我找到了一种通过javascript解决这个问题的方法。