【问题标题】:Rails: adding a field to a model-based object before passing it to the viewRails:在将字段传递给视图之前将字段添加到基于模型的对象
【发布时间】:2010-08-15 06:48:51
【问题描述】:

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

换句话说,我的“单词”对象包含以下字段:

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

words 控制器做了类似的事情

@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 类型的对象没有“定义”字段,因此上述方法不起作用。 您对完成此任务的最简洁方法有什么建议吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    为词模型添加一个虚拟属性。

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

    这样简单的事情就应该做到这一点

    class Word < ActiveRecord::Base
      attr_accessor :definition
    
       .... rest of class.... 
    end 
    

    【讨论】:

    • 谢谢,这很好用。我还在我的对象上使用了 to_json 方法,结果发现 to_json 没有获取虚拟属性。以下帖子有助于解决此问题:stackoverflow.com/questions/1563118/…
    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多