Rails:在将字段传递给视图之前,将字段添加到基于模型的对象

时间:2010-08-14 22:41:40

标签: ruby-on-rails ruby

我的rails应用程序中有一个“单词”模型。在我的单词控制器的索引操作中,我从我的数据库中获取一组单词并查找它们的定义。 我没有在我的数据库中存储定义,也不希望将它们存储在那里。 但是,我希望控制器在将每个单词的定义添加到视图之前将其添加到单词对象中。

换句话说,我的“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 个答案:

答案 0 :(得分:1)

为单词模型添加虚拟属性。

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

这样简单应该做的事

class Word < ActiveRecord::Base
  attr_accessor :definition

   .... rest of class.... 
end