заменить значение в поле выбора в панели администратора

Я создал две модели:

Ответы Типы ответов {id, text}

Последний может принимать два значения {correct / wrong} в виде текста.

Я изменил панель администратора, чтобы принять поле выбора html, чтобы связать тип ответа непосредственно в ответе.

Теперь проблема в том, что на странице списка ответов у меня есть столбец AnswerType, в котором я мог видеть идентификатор связанного типа ответа, но я хотел бы видеть текст вместо идентификатора.

В файле /admin/answers/views/index.erb есть поле:

<td><%= answer.answer_type %=></td>

Как я могу изменить его, чтобы выбрать текст, начинающийся с этого идентификатора!?

Большое спасибо и ... я должен сказать, что Падрино Рокс!

EDIT: добавление информации SCHEMA create_table "answer_types" t.string "text" [..]

create_table "answers"
    t.string "text"
    t.integer "answer_type_id"
[..]

models/answer.rb класс Ответ ‹ ActiveRecord::Base[..] has_one :answerType

models/answer_types.rb

class AnswerTypes ‹ ActiveRecord::Base[..] принадлежит_к :ответу


person Claudio Bellucci    schedule 06.03.2013    source источник


Ответы (2)


Вы должны иметь возможность получить значение text из объекта AnswerType, вызвав text для объекта:

<td><%= answer.answer_type.text %></td>
person Charles Worthington    schedule 06.03.2013
comment
Спасибо, Чарльз, я пробовал, но это не работает. В моей таблице у меня есть: answer_types (ID | текст) 1 | справа 2 | неправильный ответ (ID | текст | answer_id) 1 | фу | 1 Прямо сейчас, когда я нажимаю на список ответов, Падрино извлекает: foo | 1 Вместо этого результата я хотел бы получить foo | правильно. Если я применяю ваш код, Падрино говорит: NoMethodError в /admin/answers неопределенный метод 'текст' для 2:Fixnum Спасибо - person Claudio Bellucci; 06.03.2013
comment
Хм, у тебя ошибка? Что вы увидите, если поставите <%= answer.answer_type.inspect %>? - person Charles Worthington; 06.03.2013
comment
Извините, Чарльз, я изменил свой ответ :) При проверке я получаю правильный идентификатор. Например, если я использую только answer.answer_type. - person Claudio Bellucci; 06.03.2013
comment
Похоже, ассоциация не настроена должным образом. Я заметил одну вещь: в вашей модели Answer ваш столбец должен называться answer_type_id. Настроили ли вы связи :has_one и :belongs_to в моделях Answer и AnswerType? - person Charles Worthington; 06.03.2013
comment
Привет, Чарльз, я добавил некоторую информацию в отдельный ответ! - person Claudio Bellucci; 07.03.2013

Я пытаюсь дать вам больше информации:

В db/schema.rb у меня есть:

create_table "answer_types", :force => true do |t|
  t.string "text"
end

create_table "answers", :force => true do |t|
  t.string "text"
  t.integer "answer_type_id"
end

В models/answer.rb у меня есть:

class Answer < ActiveRecord::Base
    validates_presence_of :text
    belongs_to :question
    has_one :answer_type
end

В *models/answer_types.rb* у меня есть: class AnswerTypes ‹ ActiveRecord::Base created_to :answer end

Итак, в admin/views/answers/index.erb у меня есть:

<td><%= answer.answer_type_id %></td>

Который правильно печатает answer_type_id, связанный с ответом.

Возвращаясь к первоначальному вопросу: как я могу заменить answer_type_id на печать текстового поля answer_types?

Спасибо!

person Claudio Bellucci    schedule 07.03.2013
comment
Я узнал проблему! Это было действительно глупо!! Просто в модели answer я назвал ассоциацию belongs_to :answerType вместо answer_type !! Прямо сейчас я мог получить доступ к заголовку answer_type, просто набрав answer.answer_type.title! Спасибо Чарльзу за помощь! - person Claudio Bellucci; 07.03.2013
comment
Рад, что ты разобрался! - person Charles Worthington; 07.03.2013