在Rails 3中选择菜单?

时间:2013-05-01 19:44:36

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

我的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-----' %>

以下是我的模特:

asset.rb

belongs_to :asset_type

asset_type.rb

has_many :assets

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

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

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

1 个答案:

答案 0 :(得分: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。