为什么在rails选择中显示undefined?

时间:2017-06-17 06:43:31

标签: ruby-on-rails ruby ruby-on-rails-3

我在rails应用程序上有一个ajax select,在select上显示未定义,如下所示,

enter image description here

我添加了order范围以进行修复,但如果我删除了order列表,则不会显示,如果我放置created_atname asc,则会显示undefined

有人知道为什么吗?

on控制器是:

 def index
   genders = Gender.where(block_id: params[:block_id]).select('id, gender').order('created_at asc')
   render json: genders
 end
视图中的

是:

<%=dynamic_collection_select :product, :gender_id, :category, [], :id, :gender, { include_blank: false, submit_with_form: true, :prompt=> 'Select' }, { class: 'form-control select_item' } %>

性别对象

class Gender < ActiveRecord::Base 

  has_many :categories
  belongs_to :block

  accepts_nested_attributes_for :categories

  attr_accessible :gender,  :categories_attributes

end

2 个答案:

答案 0 :(得分:1)

您正在拥有activerecord集合对象,需要转换为JSON,

def index
  genders = Gender.where(block_id: params[:block_id]).select('id, gender').order('created_at asc')
  render json: genders.as_json
end

答案 1 :(得分:1)

确保您使用的是实例变量,以便在视图中显示:@genders,其次确保您在视图中调用该对象:例如: dynamic_collection_select @genders .....等

<强>要点:

  1. 在变量前添加@符号:@genders
  2. 在collection_select帮助器方法中调用该变量。 @genders
  3. 修改

    为什么你渲染为json?如果你使用的是jquery,不应该使用render到html.erb模板吗?