Пользовательская модель ведет себя странно, работает в консоли rails, говоря неопределенный метод в контроллере - PullRequest
1 голос
/ 24 апреля 2011

Я делаю это:

user = User.find( params[:id] )

когда я делаю:

user.section_id

это говорит:

nomethoderror exception undefined method 'section_id' for <#Array:0x.....>

Почему написано <#Array? </p>

В консоли rails все работает нормально, когда я делаю: u = User.find(2)

Обновление

Мой JavaScript делает это:

$.ajax({
            type: "POST",
            url: "/user/add_section",
            dataType: "html",
            data: { id: id, section_text: sectionText
            },
            success: function(payload) {

            },
            error: function(jqx, ts, et) {

            },
            complete: function(){}
        });

Используя хром, я вижу, что идентификатор равен 8.

Мое действие контроллера:

def add_section

  user = User.find(params[:id])

  section_id = user.section_id   # error!!

end

Я поместил отладчик в этот код, и объект загружается правильно, просто он загружается в массив, так что это работает:

user[0].section_id

но в irb он отлично работает с: user.section_id для точно такого же значения, которое передается методу find.

Ответы [ 2 ]

1 голос
/ 25 апреля 2011
user = User.find( params[:id] )

Похоже, params[:id] возвращает Массив , поэтому user - это массив пользователей.Или это может быть только один перенос идентификатора в [], например: user = User.find [8] - который по-прежнему будет возвращать массив с одним элементом

, поэтому вы должны отладить ваш params[:id].

UPD

Также здесь есть проблема в вашем приложении.Это не ОТДЫХ.Вы должны назвать /user/:id/add_section path вместо /user/add_section.

Ваши маршруты:

resources :users do
  post :add_section, :on => :member
end
0 голосов
/ 24 апреля 2011

Пользователь. find может возвращать несколько типов.Вы не передаете правильный аргумент для своего примера.Вы можете увидеть параметры, отправленные на контроллер в журнале сервера или просто распечатать его через p params

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