我是Ruby on Rails的新手,我正在学习一些教程并开发了一个小型CRUD应用程序。在一个形式我有一个下拉,以前填充硬编码值,但现在我用数据库中检索到的值填充它工作正常,但麻烦的是我打算获得下拉列表的选定值,而不是我最终得到了这个价值的id,我知道我在做一些逻辑错误的事情,我做了一些研究,但却无法找到满足我要求的解决方案。
这是我的控制器动作,
def new
@list=CategoryType.all
end
以下是表单中的下拉列表:
<%= f.label :maincategory %>
<% options = options_from_collection_for_select(@list, 'id','maincategory') %>
<%= f.select :maincategory, options %>
这是从控制器中的表单中获取参数的操作:
private
def category_params
params.require(:category).permit(:name, :maincategory)
end
此操作将其保存在数据库中:
def create
@category= Category.new(category_params)
if @category.save
redirect_to @category
else
render 'new'
end
end
而不是maincategory id正在保存在数据库中,我对ROR全新,真的很感激帮助。提前谢谢。
答案 0 :(得分:0)
为什么要将maincategory
保存为字符串?
我想在你的Category
模型中,你应该有一个belongs_to :category_type
。
我认为最好保存CategoryType
对象的maincategory
ID。
这样,您的类别与其类型之间就有了正确的关系。因此,如果您要检索记录的名称,则可以使用此命令获取类别的CategoryType:@category.category_type.name
,因为您的数据关系是正确的。
如果我误解了某些内容,请告诉我!