无法检索rails中动态填充的下拉列表的选定值

时间:2014-08-05 09:25:45

标签: ruby-on-rails ruby

我是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全新,真的很感激帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

为什么要将maincategory保存为字符串?

我想在你的Category模型中,你应该有一个belongs_to :category_type。 我认为最好保存CategoryType对象的maincategory ID。

这样,您的类别与其类型之间就有了正确的关系。因此,如果您要检索记录的名称,则可以使用此命令获取类别的CategoryType:@category.category_type.name,因为您的数据关系是正确的。

如果我误解了某些内容,请告诉我!