0

在轨道 3

使用remote方法表单提交时,它会以相同的表单值影响数据库两次。

控制器文件:

 @user_message = UserMessage.new(params[:user_message])
 if  @user_message.save
   render :update
 else
   render :nothing => true
 end

查看文件:

<%= form_tag ('/feedback/user_message'), :method =>'post',  :remote=> true, :id=>'user_message' do%>
      <%= hidden_field_tag 'user_message[user_id]', @user.user_id %>
      <h2><%= @question %></h2>
      <%= text_area_tag 'user_message[msg]',"",  :size=>"40x5" %>
      <%= submit_tag  "Submit"%>
  <% end %>

当我点击提交按钮时,它会在表上创建两条记录。为什么?

4

2 回答 2

0

最有可能与资产管道有关的问题

您应该在之前预编译资产管道。

这将创建两个 rails.js 副本,一个在您的资产中,一个在 application.js 中

这是 Rails 3 中的错误或陷阱,请参见此处http://www.ruby.code-experiments.com/blog/2011/10/another-gotcha-with-the-rails-31-asset-pipeline-or-why -are-my-jquery-ujs-ajax-requests-triggered-twi.html

希望这有帮助

于 2012-08-23T06:11:31.113 回答
0

可能有几件事可能导致这种情况

可能是 ujs 文件被包含两次 可能就像

//= require jquery_ujs // expected to load from the rails-jquery gem
//= require_tree .     // if any file is present in assets directory hierarchy it will be loaded

或者只是一个让你睡不着觉的虫子

https://github.com/rails/jquery-ujs/issues/208

查看更多解决方案

Jquery Rails 3 ...表单提交两次...删除两次...帮助

Rails 3.1远程请求提交两次

这也可能与对资产管道何时以及如何使用 pecompiled 资产的理解有关。

我总是在开发模式下使用这个配置

config.server_static_assets = false

这会强制应用从应用资产中调用资产

并在生产模式下使用来自公共的预编译资产

于 2012-08-23T06:22:51.500 回答