远程方法理解?

时间:2012-08-23 05:53:38

标签: ruby ruby-on-rails-3

在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 %>

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

2 个答案:

答案 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

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

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