Rails 3.1 form_for отсутствует метод - PullRequest
0 голосов
/ 27 октября 2011

Я работаю с моделью, которая, как мне известно, работает (записи существуют в базе данных, их можно искать и отображать в других представлениях и т. Д.), Но когда я пытаюсь использовать тег form_for для создания представления для редактируя одну из этих записей, я получаю сообщение об ошибке:

Показывает /var/www/caucus/app/views/registration_loader/checkIn.html.erb, где поднята строка # 13:

undefined method `voter_path' for #<#<Class:0x98cabdc>:0x98c8878>

Извлеченный источник (около строки № 13):

10: </div>
11: 
12: <%= form_for(
13:     @voter,
14:     { :controller => "registration_loader",
15:       :action     => "editVoter"
16:     } ) do |f| %>

@voter относится к объекту избирателя, полученному с помощью:

#   Get the voter.
@voter = Voter.where( [ "voter_id = ?", @voterId ] )[ 0 ]
if not @voter
    flash[ :error ] = "NO VOTER!"
    redirect_to :action => 'search'
elsif not @voter.kind_of?( Voter )
    flash[ :error ] = "NO VOTER RECORD! (#{@voter.class.to_s})"
    redirect_to :action => 'search'
end

Когда я изменяю @voter на :voter, он перестает выдавать ошибку, но не заполняет поля в моем представлении данными для записи, которую я хочу редактировать.

Согласно руководству по API Rails 3.1, передача объекта модели в form_for должна генерировать код, который позволяет мне редактировать данные в этом объекте, но очевидно, что отсутствует вспомогательный метод (voter_path). Где этот метод voter_path должен быть определен, и какова его надлежащая семантика и сигнатура? Нигде в документации не рассматривается создание такого метода, и я не могу найти никаких примеров написания такого метода.

Метод *_path должен генерироваться автоматически? Если нет, может кто-нибудь указать мне документацию, в которой указан синтаксис и семантика этого метода?

Спасибо, Джон С.

1 Ответ

0 голосов
/ 28 октября 2011

Краткий ответ: не используйте form_for, если вы также не разработали свой код для использования «изобретательных контроллеров».Вместо этого используйте form_tag.Добавление ресурсов: избиратели к маршрутам создают маршруты к несуществующему контроллеру.

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