Странное поведение Rails при попытке отправить форму - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть модель 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. По какой-то причине, когда эта форма отправляется, вместо запуска кода в действии temp_path Rails пытается загрузить определенную заметку, а из-за невозможности перенаправляет ее обратно в индекс.

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 Ответ

1 голос
/ 08 декабря 2010

Вы должны показать нам код вашего контроллера. Есть ли у вас какие-либо утверждения 'redirect_to'? С какими условиями?

Может быть, у вас есть некоторые фильтры в вашем контроллере, может быть, в ApplicationController? Из предупреждения об устаревании я вижу, что у вас там может быть какой-то код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...