尝试提交表单时出现奇怪的Rails行为

时间:2010-12-08 13:05:08

标签: ruby-on-rails forms

我有一个notes模型,它与users模型有多对多的关系。在notes控制器的索引视图中,我有以下形式:

<form id='note_form' method="post" action="/notes/temp_path" >
    <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" />        
    <input type="text" size="30" name="start_date" id="start_date">
</form>

指向temp_path控制器中的notes操作。由于某种原因,在提交此表单时,Rails不是在temp_path操作中运行代码,而是尝试加载某个注释,因为它不能,它会重定向回索引。

Started POST "/notes/temp_path" for 127.0.0.1 at 2010-12-08 22:08:25 +1000
DEPRECATION WARNING: Setting filter_parameter_logging in ActionController is deprecated and has no longer effect, please set 'config.filter_parameters' in config/application.rb instead. (called from <class:ApplicationController> at /Users/ben/rails_projects/note_prog/app/controllers/application_controller.rb:6)
  Processing by NotesController#temp_path as HTML
  Parameters: {"authenticity_token"=>"Ck6NmmYO86rvJSEsiqpIMkcaiErEhV7s/XMzjka15AI="}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE ("users"."id" = 56) LIMIT 1
  UserNote Load (0.2ms)  SELECT "user_notes".* FROM "user_notes" WHERE ("user_notes"."note_id" = 0)
Redirected to http://localhost:3000/notes

我很确定WHERE ("user_notes"."note_id" = 0)位导致问题。但我不确定为什么甚至这样做呢?基于它上面的一行,User Load (0.3ms) SELECT "users".* ...看起来像Rails的幕后花絮。我无需在temp_path操作中加载现有注释。我怎么能阻止这个?我正在使用Rails 3.0.1。谢谢你的阅读。

1 个答案:

答案 0 :(得分:1)

您应该向我们展示控制器的代码。你有没有'redirect_to'陈述?有条件吗?

也许你的控制器中有一些过滤器,也许在ApplicationController中?从弃用警告我看到你可能有一些代码。