2014-02-17 6 views
0

У меня есть форма, которая обновляет объект @identity. Два атрибута @identity необходимо назначить из отдельной коллекции @accounts.Simple form array of hashes

@accounts = [{ 
    'name' => 'A', 
    'page_id' => 1}, 
    { 
    'name' => 'B', 
    'page_id' => 2 
    }] 

Потребности формы отображения name, но проходят как name и page_id.

<%= simple_form_for(@identity, :remote => true) do |f| %> 

    <%= f.input :page_name, :collection => @accounts.map { |a| a['name'] }, :as => :radio_buttons, :item_wrapper_tag => :li %> 

    <%= f.submit 'Submit', :class => 'btn btn-primary' %> 

<% end %> 

Как я могу также передать соответствующий page_id атрибут без его отображения?

+0

Вы не можете смешивать и сопоставлять строки и символы. Вы устанавливаете 'a [: name]', но читаете 'a ['name']', который не будет работать, если это действительно не HashWithIndifferentAccess', и ничего, что вы опубликовали, указывает, что это так. – meagar

+0

Исправлено. '@ accounts' не должны были использовать символы. – mnort9

ответ

0
:collection => @accounts.map { |e| [e['name'], e['page_id']] } 
+0

Как получить эти атрибуты в контроллере? Ничего не присвоено ': page_name' – mnort9

+0

Не работает. Мне нужно изменить 'f.input' на что-то другое, чтобы передать атрибуты в качестве параметров? – mnort9