0

我的 Rails 3 应用程序中有以下代码,它应该显示每个asset_type记录的选择框:

assets_helper

def asset_type_all_select_options
  asset_type.all.map{ |asset_type| [asset_type.name, asset_type.id] }
end

_form.html.erb(资产)

<%= f.select :asset_type_id, asset_type_all_select_options, :class => "input-text", :prompt => '--Select-----' %>

这是我的模型:

资产.rb

belongs_to :asset_type

资产类型.rb

has_many :assets

使用上面的代码我得到以下错误:

undefined local variable or method `asset_type' for #<#<Class:0x007f87a9f7bdf8>:0x007f87a9f77d48>

难道我做错了什么?这种方法不适用于双桶型号名称吗?任何指针将不胜感激!

4

1 回答 1

1

您的 assets_helper 文件中的变量asset_type未定义。您需要将其传递给辅助方法

def asset_type_all_select_options(asset_type)
  # ...
end

或者使用您在控制器中定义的实例变量(例如@asset_type)。

但是,您可以通过使用#collection_select表单助手来简化此操作。

_form.html.erb(资产)

<%= f.collection_select :asset_type_id, AssetType.all, :id, :name, { prompt: '--Select-----' }, class: 'input-text' %>

查看#collection_select的API 以了解详细信息。

于 2013-05-01T19:50:22.277 回答