Rails类别选择显示:名称?

时间:2014-07-11 04:01:59

标签: ruby-on-rails ruby

在我的Rails应用程序中,我创建了一个类别模型和几个具有不同名称的实例,因此用户可以将他们列出待售的产品添加到一个类别中。唯一的问题是:

<%= f.select :category, Category.all, :prompt => "Select One" %>

使用此代码时,类别会正确显示,但如果我尝试使用Category.all.name,则不会显示。我可能真的很累,但是如何显示每个类别的:name属性而不是一个神秘的实例标识符?

3 个答案:

答案 0 :(得分:3)

我认为您正在寻找collection_select

<%= f.collection_select :category, Category.all, :id, :name, :prompt => 'Select One' %>

答案 1 :(得分:1)

Category.all将返回一系列类别

如果您想要所有类别的名称,

试试这个,

  

Category.all.map(安培;:名称)

您可能需要像这样修改select tag

<%= f.select :category, Category.all.map(&:name), :prompt => "Select One" %>

答案 2 :(得分:1)

Rails有一个非常有用的方法,如pluck

  

作为选择一个或多个属性而不加载一堆的快捷方式   记录只是为了获取你想要的属性。

<%= f.select :category, Category.pluck(:name), :prompt => "Select One" %>

但这不是Rails方式,在视图中使用Class,你必须在控制器中声明@variable并将其传递给select helper:

控制器动作:

@names = Category.pluck(:name)

在观点中:

<%= f.select :category, @names, :prompt => "Select One" %>