2015-05-25 3 views
0

я получаю ArgumentError для линии # в моих взглядах 3/-/new.html.erb файл, который гласит:ArgumentError неверное число аргументов (1 для 3..4)

«неверное число аргументов (1 для 3..4)»

<div class='form-group'> 
    <%= form.label :category %> 
    <%= form.select "category", options_from_collection_for_select([{1 => 'Food'}, {2 => 'Entertainment'}]) %> 
</div> 

приложение трассировки состояний:

приложение/просмотров/события/new.html.erb: 14: в block in _app_views_events_new_html_erb__1569841425540097418_70204987081640' app/views/events/new.html.erb:5:in _app_views_events_new_html_erb__1569841425540097418_70204987081640'

ERB: 14 является строка # 3 выше, и ERB: 5 является

<%= form_for @event do |form| %> 

ответ

1

Сообщение об ошибке броска options_from_collection_for_select([{1 => 'Food'}, {2 => 'Entertainment'}])

[{1 => 'Food'}, {2 => 'Entertainment'}] является массив передается в качестве одного аргумент options_from_collection_for_select метод; следовательно, сообщение об ошибке.

Правильная форма для вызова метода options_from_collection_for_select помощник

options_from_collection_for_select(collection, value_method, text_method, selected = nil) 

Подробное описание и примеры использования в http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_from_collection_for_select

0

Я думаю, вы бы лучше использовать options_for_select, который будет работать с аргументами вы предоставили и просто заменили options_from_collection_for_select в своем коде. Документация по которой вы можете найти here.

Вам нужно решить, хотите ли вы номер (1, 2 и т. Д.) Или слово («Еда», «Развлечения» и т. Д.) Как «значение», которое достигает вашего заднего конца. Например:

options_for_select({'Food' => 1, 'Entertainment' => 2}) 

Выход выше в HTML будет выглядеть следующим образом:

<option value="1">Food</option> 
<option value="2">Entertainment</option> 

Метод options_from_collection_for_select требует 3 аргумента. Вы только предоставили один: [{1 => 'Food'}, {2 => 'Entertainment'}]. Второй аргумент должен быть методом/атрибутом для каждого объекта в коллекции, который представляет «значение», третий должен быть меткой для этого значения.

Смежные вопросы