ActiveScaffold - изменение имени по умолчанию для связанного объекта - PullRequest
2 голосов
/ 17 мая 2009

Моя модель "combobox" has_many "comboboxselects" и "comboboxselects" belongs_to "combobox". Activescaffold "comboboxes" отображает данные в колонке comboboxselects как "#<Comboboxselect:0x472d25c>". Как сделать так, чтобы в столбце «comboxselects» отображался столбец «answer»?

Модель:

class Combobox < ActiveRecord::Base
 has_many :comboboxselects
end

class Comboboxselect < ActiveRecord::Base
 belongs_to :combobox
end

Схема:

  create_table "comboboxes", :force => true do |t|
   t.string   "question"
   t.datetime "created_at"
   t.datetime "updated_at"
  end

  create_table "comboboxselects", :force => true do |t|
   t.integer  "combobox_id"
   t.string   "answer"
   t.datetime "created_at"
   t.datetime "updated_at"
  end

Выход:

class ComboboxesController < ApplicationController
 active_scaffold :combobox do |config|
   config.list.columns = [:id, :question]
   config.columns = [:question, :comboboxselects]
 end
end

class ComboboxselectsController < ApplicationController
 active_scaffold :comboboxselect  do |config|
   config.list.columns = [:id, :combobox, :answer]
   config.columns = [:answer]
 end
end

Ответы [ 2 ]

1 голос
/ 19 мая 2009

Во-первых, все поля, указанные в config.list.columns должны быть включены в config.columns (любые явно определенные config. *. Столбцы должны быть подмножествами config.columns).

Затем в каждой модели, в которой еще нет поля или метода имени или заголовка, необходимо объявить этот пользовательский метод:

class Comboboxselect < ActiveRecord::Base
 belongs_to :combobox
 def to_label
  "#{answer}" 
 end
end

См. Документацию ActiveScaffold: Описание записей: to_label

0 голосов
/ 18 мая 2009

Когда вы говорите, дисплеи, я предполагаю, что вы имеете в виду в представлении? Можете ли вы опубликовать код вашего бега, чтобы получить этот вывод.

Похоже, у вас просто есть объект Comboboxselect, вы пытались добавить к нему .answer для доступа к нужному атрибуту?

...