【问题标题】:How to add value to the table from view of another in rails?如何从rails中的另一个视图为表格添加价值?
【发布时间】:2013-03-09 13:07:50
【问题描述】:

考虑一下我有两个表,即项目和颜色。

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 
----+------------+------------+---------+--------------

【问题讨论】:

  • 如果您发布您的模型和视图,我们可能会为您提供帮助。
  • 正如我之前所说,我有 new.html.erb 用于我必须保留颜色字段的项目,我必须保存颜色表的值和 item_id 以进行关联,但我没有知道怎么做吗?

标签: ruby-on-rails ruby-on-rails-3 relationship


【解决方案1】:

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

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

在您的控制器操作中Items#new

@items.colors.build

在您的 items/new.html.erb 中添加 fields_for 和 items 表的其他字段。

<%= 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

【讨论】:

  • 我已按照您的说法进行操作,当我转到 items/new 时,它会显示 nil:NilClass 的未定义方法“colors”。我做错了什么?
  • 当我添加accepts_nested_attributes_for :colors 时出现上一个错误,当我更改为accepts_attributes_for :colors 时,它显示未定义的方法“key?”对于 nil:NilClass。
  • 对不起。是我的错。我已经更正了,它运行良好。非常感谢。
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2015-09-26
相关资源
最近更新 更多