【问题标题】:Rails category select display :name?Rails 类别选择显示:名称?
【发布时间】:2014-07-11 04:01:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    我想你在找collection_select

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

    【讨论】:

      【解决方案2】:

      Category.all 将返回一个类别数组,

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

      试试这个,

      Category.all.map(&:name)

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

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

      【讨论】:

        【解决方案3】:

        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" %>
        

        【讨论】:

          猜你喜欢
          • 2014-10-31
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-18
          • 2020-05-06
          • 1970-01-01
          • 2018-10-15
          相关资源
          最近更新 更多