1

我有一个 form_for 像这样:

<%= form_for(@post) do |f| %>

我想提交一个不是模型属性的参数

<%= f.text_field :label%>

我有一个标签模型(标签 has_many :posts 和帖子 has_many :labels),在 posts_controller 的创建操作中,我想根据标签 text_field 创建一个新的 Label 对象。使用上面的 text_field 我得到:

undefined method `label'for #<Object>

我怎样才能实现这一目标?

提前致谢!

4

2 回答 2

8

如果您的属性不存在于数据库表中,但您仍想使用它,那么您已通过以下方式将该属性指定到模型中

attr_accessor :name, :email, :content
于 2012-07-20T07:40:09.553 回答
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

有人发了然后删了。。。

于 2012-07-20T07:54:11.017 回答