我有一个像这样的form_for:
<%= form_for(@post) do |f| %>
我想提交一个不属于模型属性的参数
<%= f.text_field :label%>
我有一个Label模型(标签has_many:posts和posts has_many:labels),在posts_controller的create动作中,我想根据标签text_field创建一个新的Label对象。通过上面的text_field,我得到了:
undefined method `label'for #<Object>
我怎样才能实现这个目标?
提前致谢!
答案 0 :(得分:8)
如果您的属性不存在于数据库表中,并且仍然想要使用它,那么您已通过以下方式将该属性指定到模型中
attr_accessor :name, :email, :content
答案 1 :(得分:0)
您可以尝试使用fields_for方法创建关联对象。
<%= form_for(@post) do |f| %>
<%= fields_for @post.labels do |label| %>
<%= label.text_field :name %>
<%= label.text_area :description %>
<% end %>
<% end %>
显示在控制器中构建关联对象所需的默认标签数。
在你的帖子控制器中添加
def new
@post = Post.new
#To build 2 labels use
2.times do
@post.labels.build
end
end
要接受嵌套属性,请在Post模型中添加以下代码。
class Post < ActiveRecord::Base
accepts_nested_attributes_for :labels
end
有人发布了这个然后删除了......