2013-03-29 2 views
0

У меня возникла проблема с grouped_collection_select с использованием Mongoid. Сообщение об ошибке, которое я получаю: ActionView :: Template :: Error (undefined method `merge 'для: name: Symbol).Rails grouped_coolection_select using Mongoid

Я пользуюсь рельсами 3.2.12 & Последняя версия Монгоида.

Вот мой код:

class States 
    include Mongoid::Document 
    field :_id 
    field :name 
    field :abbreviation 
    field :countryId 

    belongs_to :countries 
end 

class Countries 
    include Mongoid::Document 
    field :_id 
    field :name 
    field :abbreviation 

    has_many :states 
end 

<div class="field"> 
    <%= f.label :_id, "Country" %><br /> 
    <%= f.collection_select :_id, Countries.order_by([:name, :asc]), :_id, :name, include_blank: true %> 
</div> 
<div class="field"> 
    <%= f.label :_id, "State or Province" %><br /> 
    <%= f.grouped_collection_select(:states, :countryId, Countries.order_by([:name, :asc]), :states, :name, :id, :name) %> 
</div> 

Я был бы признателен за любую помощь, чтобы решить эту проблему.

+0

Попробуйте это: '<% = f.grouped_collection_select (: state_id, Countries.order_by ([: name,: asc]),: states,: name,: id,: name)%> ' – codeit

ответ

0

Вы используете f.grouped_collection_select, что подразумевает, что первый параметр будет выведен из f.object. Удаление вашего первого параметра и изменение второго имени столбца поля, которые вы хотите, чтобы спастись, следует решить вашу проблему

<%= f.grouped_collection_select(:state, Countries.order_by([:name, :asc]), :states, :name, :id, :name) %> 
+0

Спасибо за быстрый ответ. Я внедрил ваши изменения, но теперь я получаю это сообщение об ошибке: ActionView :: Template :: Error (неопределенный метод 'state 'для # ). Любые мысли о том, как их решить? Любая помощь будет оценена по достоинству. –

+0

попробуйте вместо: state,: states в вашем коде – regmiprem

+0

вам нужно изменить ': state' в ответе на имя поля, в котором вы хотите сохранить выбранное состояние. без каких-либо знаний, где вы используете форму, мы не будем знать, что такое имя поля. – jvnill