在rails 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 %>
当我点击提交按钮时,它会在表格上创建两条记录。 为什么呢?
答案 0 :(得分: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
希望这个帮助
答案 1 :(得分: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... form submits twice... deletes twice... help
Rails 3.1 remote requests submitting twice
这也可能与了解资产管道何时以及如何使用pecompiled资产有关。
我总是在开发模式下使用此配置
config.server_static_assets = false
这会强制应用从应用资产中调用资产
并在生产模式下使用公共预编译资产