我的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>
我做错了吗?这种方法不适用于双桶模型名称吗?任何指针都将不胜感激!
答案 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。