我的Post
模型具有title
和content
属性。
我想在用户创建这样的帖子时发布推文。
<%= form_for @post do |f| %>
<%= f.text_field :title %>
<%= f.text_area :content %>
<%= f.check_box :with_tweet %> # Error
<%= f.text_field :tweet %> # Error
<% end %>
此代码失败,因为with_tweet
没有tweet
和Post
属性。
我不认为查询字符串是这样的好主意情况。
我应该如何发送与模型无关的信息?
答案 0 :(得分:3)
将它们定义为虚拟属性:
class Post < ActiveRecord::Base
...
attr_accessor :with_tweet, :tweet
...
end
attr_accessor
将为with_tweet
和tweet
提供getter和setter方法,然后您可以通过@post
对象访问这些方法。
答案 1 :(得分:2)
继Vee的回答之后,让我解释一下你为什么需要它:
Rails模型中的每个
attribute
都是使用Ruby getter & setter的结果 - 意味着您的模型的属性是 基本上只是Ruby对象的一部分,在你的类时构建 初始化你遇到的问题是Ruby on Rails没有构建任何其他东西 除了数据库中的属性之外的其他属性,这意味着如果您愿意 跟踪额外数据,您必须使用
中的那些virtual attributes
来发布 该类知道填充不在db
attr_accessor
用于定义那些额外属性