2012-05-25 4 views
0

Я пытаюсь разрешить текущему пользователю приглашать другого пользователя и назначить нового приглашенного в список, но я получаю сообщение об ошибке, когда приглашенный пользователь переходит на регистрацию.Ошибка при присвоении атрибута ресурсу в rails

Есть две модели, Пользователь и Листинг, которые связаны с has_and_belongs_to_many на каждой модели. Существует также модель приглашения, содержащая токен и список, которому должен быть назначен приглашенный.

Я перекрывая контроллер регистраций DEViSE:

def new 
    resource = build_resource({:invitation_token => params[:invitation_token]}) 
    resource.email = resource.invitation.recipient_email if resource.invitation 
    respond_with resource 
    end 

    # POST /resource 
    def create 
    resource = build_resource 
    resource.listings << resource.invitation.listing if resource.invitation 
. . . 

Когда я приглашаю нового пользователя и перейти к Новенькие (регистрация/новый) страницы, заполните форму, и нажмите на кнопку отправить, он отлично работает. Но, если я пропущу часть формы вызывая ошибку проверки, когда я затем заполнить форму правильно, и нажмите на кнопку отправить, я получаю следующее сообщение об ошибке:

Couldn't find Listing with id=0 

появляется ошибка, происходит на линии :

resource.listings << resource.invitation.listing if resource.invitation 

Без этой линии ошибка не происходит.

Здесь ошибка из журналов сервера:

Listing Load (0.3ms) SELECT "listings".* FROM "listings" WHERE "listings"."id" = $1 LIMIT 1 [["id", 0]] 

Что я здесь делаю неправильно?

ответ

0

Проблема была на самом деле в моем файле представления, где я имел следующее:

-if resource.listing_ids != [] 
    = f.hidden_field :listing_ids#, :value => resource.invitation.listing.id 

Это осталось от предыдущей попытки пройти в listing_ids в Params.

Смежные вопросы