2013-03-09 69 views
0

考虑我有两个表,即项目和颜色。如何从rails的另一个视图添加值到表中?

Item表包含has_many与颜色的关系,因为每个项目可以具有多种颜色但颜色尚不存在。

我有一个页面,我必须添加项目,并在同一页面我必须指定项目的颜色。所以如何将这些值与物品ID一起添加到颜色表中。请帮帮我。 我正在努力移动。

编辑:

项目模型

class Item < ActiveRecord::Base 
has_many :colors 
end 

颜色模型

class Color < ActiveRecord::Base 
    belongs_to :items 
    end 

id | created_at | updated_at | item_id | color_name 
----+------------+------------+---------+-------------- 
+2

如果您发布的模型和视图,我们也许可以帮助你。 – kobaltz 2013-03-09 13:08:43

+0

正如我之前所说,我有new.html.erb项目,我必须保持颜色的字段,我必须保存颜色表的值和item_id的关联,但我不知道如何做到这一点? – logesh 2013-03-09 13:29:08

回答

1

如果颜色会ALW ays是用item创建的,那么你需要使用嵌套属性。

class Item < ActiveRecord::Base 
    attr_accessible :colors_attributes 
    has_many :colors 
    accepts_attributes_for :colors 
end 

在你的控制器动作Items#new

@items.colors.build 

在你的项目/ new.html.erb与项目表中的其它字段添加fields_for。

<%= form_for @item do |f| %> 
    <%= f.text_field :name %> 
    ... 
    <%= f.fields_for :colors do |color| %> 
    <%= color.text_field :some_column_name_from_color %> 
    <% end %> 
<% end %> 

对于添加/删除多种颜色上飞,你可以使用nested_form gem

+0

我已经按照你所说的去了,当我去找items/new的时候,它会显示nil:NilClass的未定义方法'colors'。我究竟做错了什么? – logesh 2013-03-11 04:21:59

+0

以前的错误来了,当我添加了accepters_nested_attributes_for:颜色,当我改变了accep_attributes_for:颜色它显示未定义的方法'键?'为零:NilClass。 – logesh 2013-03-11 04:40:02

+0

对不起。这是我的错误。我已经纠正,它工作完美。非常感谢。 – logesh 2013-03-11 04:56:41

相关问题