Rails: добавление поля в объект на основе модели перед передачей его в представление - PullRequest
0 голосов
/ 15 августа 2010

У меня есть «слово» модель в моем приложении rails. В действии index моего контроллера слов я извлекаю набор слов из своей базы данных и просматриваю их определения. Я не храню определения в моей базе данных и не хочу хранить их там. Однако я хотел бы, чтобы контроллер добавил определение для каждого слова в слово-объект, прежде чем передать его представлению.

Другими словами, мои объекты "word" содержат следующие поля:

t.integer  "user_id"
t.text     "notes"
t.datetime "created_at"
t.datetime "updated_at"
t.string   "word_name"

Контроллер слов делает что-то вроде

@words = current_user.words

И представление может отображать такие вещи, как

<% @words.each do |w| %>
    <%= w.word_name %>
    <%= w.notes %>
<% end %>

Я бы хотел, чтобы контроллер сделал

@words.each do |w|
    w.definition = "blah"
end

, а затем отобразить это в моем представлении:

<%= word.definition %>

Однако объекты типа Word не имеют поля «определения», поэтому вышеописанное не работает. У вас есть предложения, как сделать это самым чистым способом?

Спасибо

1 Ответ

1 голос
/ 15 августа 2010

добавить виртуальный атрибут к модели слова.

http://railscasts.com/episodes/16-virtual-attributes

что-то простое, как это должно сделать это

class Word < ActiveRecord::Base
  attr_accessor :definition

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