0

所以这是一个学校项目。我们不必使用 Ruby,但我决定在此过程中学习一门新语言。所以我的问题是:

我有一个资产,它应该具有制造商、位置和员工表的外键。它也有许多维修记录。

class Asset < ActiveRecord::Base
  belongs_to :manufacturer
  belongs_to :location
  belongs_to :employee
  has_many :maintenances
end

我很难理解如何为资产构建创建方法?我有选择框来选择这三个值,但我不知道如何将它们正确地与储蓄资产相关联。

以下是选择框:

    <p>
        <%= f.label :Manufacturer %>
        <%= select_tag(:Manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name))%>
    </p>
    <p>
        <%= f.label :Location %>
        <%= select_tag(:Location, options_from_collection_for_select(Location.all, :id, :name))%>
    </p>
    <p>
        <%= f.label :Employee %>
        <%= select_tag(:Employee, options_from_collection_for_select(Employee.all, :id, :email))%>
    </p>

我一直在努力创造这个。谢谢。

4

2 回答 2

1

我认为您需要使用foreign_id,而不是关联名称,根据rails docs:“如果您使用select(或类似的助手,如collection_select,select_tag)来设置belongs_to关联,您必须传递外键的名称(在上面的例子中 city_id)"

此外,此 select_tag 与其父表单无关。选择标签名称属性将是错误的。尝试:f.select_tag(:employee_id, .....)

最后,你应该试试formtastic。当我需要在 rails 中呈现 html 表单时,我会使用它——它可以节省大量时间。

于 2013-10-15T04:04:57.847 回答
0

您可以像这样编写控制器动作(如果您也遵循马里奥的建议):

def create
  @asset = Asset.create(:employee_id => params[:employee_id], :manufacturer_id ...)
end
于 2013-10-15T08:19:18.333 回答