2016-06-07 4 views
1

Я очень новичок в кодировании в целом. Я пытаюсь укрепить свои навыки, создав веб-приложение, которое позволяет людям оценивать свои любимые рестораны для определенных блюд (например, лучшие рестораны для гамбургеров).NoMethodError in Dishings # new

В настоящее время я работаю над таблицей , которая соединяет рестораны и блюда. Я пытаюсь добавить select_tags, чтобы выбрать одно блюдо из тарелки и один ресторан из ресторана . Я получаю NoMethodError. Поражаю любое понимание моих ошибок. Благодаря!

ошибка:

NoMethodError in Dishings#new Showing /Users/frederick7/code/Appdev/pear_review/app/views/dishings/new.html.erb

где линия # 27 поднял:

undefined method `map' for #

Извлеченные источник (около линии № 27):

</label> 

<%= select_tag(:restaurant_id, options_from_collection_for_select(@dishing, 'id', 'restaurant_id', @dishing.id)) %> 
</div> 

<!-- Label and input for dish_id --> 

Вот соответствующий код в просмотров/dishings /new.html.erb:

<!-- Label and input for restaurant_id --> 
    <div class="form-group"> 
    <label for="restaurant_id" class="control-label"> 
     Restaurant 
    </label> 
    <%= select_tag(:restaurant_id, options_from_collection_for_select(@dishing, 'id', 'restaurant_id', @dishing.id)) %> 
    </div> 

    <!-- Label and input for dish_id --> 
    <div class="form-group"> 
    <label for="dish_id" class="control-label"> 
     Dish 
    </label> 
    <%= select_tag(:dish_id, options_from_collection_for_select(@dishing, 'id', 'dish_id', @dishing.id)) %> 
    </div> 

Здесь, возможно, соответствующий код из dishings_controller.rb:

def new 
    @dishing = Dishing.new 
end 

def create 
    @dishing = Dishing.new 
    @dishing.restaurant_id = params[:restaurant_id] 
    @dishing.dish_id = params[:dish_id] 

    if @dishing.save 
    redirect_to "/dishings", :notice => "Dishing created successfully." 
    else 
    render 'new' 
    end 
end 
+0

'.map' для коллекции,' options_from_collection_for_select' занимает в коллекции и называют '.map' на нем, но' @ dishing' не коллекция – lusketeer

ответ

0

Как я увидел, что вы используете @dishing, который не является массивом и options_from_collection_for_select требуется массив или коллекцию.

И еще одно, что я замечаю, что вы создаете представление для нового действия и, возможно, в контроллере может использовать @dishing = Dishing.new.

и если вы выборки restaurant_id и dish_id чем не представляется возможным

+0

Эта команда не создает массив символов ?: 'def create @dishing = Dishing.new' –

+0

Нет, эта команда не будет создавать какой-либо массив. Это создаст новый объект класса Dishing. –