Dishings中的NoMethodError #new

时间:2016-06-07 15:43:04

标签: ruby-on-rails ruby

我对编码很新。我正在努力通过创建一个网络应用程序来支持我的技能,该应用程序允许人们为他们最喜欢的餐馆排名特定的菜肴(例如汉堡包顶级餐厅)。

我目前正在制作连接餐馆和菜肴的连接表。我正在尝试添加select_tags餐桌中选择一个菜肴,从餐厅餐桌中选择一个餐馆。我得到了NoMethodError。非常感谢我对错误的任何见解。谢谢!

错误:

  

Dishings中的NoMethodError #new   显示/Users/frederick7/code/Appdev/pear_review/app/views/dishings/new.html.erb

第27行引出:

  

的未定义方法`map'

提取的来源(第27行):

</label>

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

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

以下是views / 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

1 个答案:

答案 0 :(得分:0)

正如我所看到你使用的@dishing不是数组而且options_from_collection_for_select需要数组或集合。

还有一件事我注意到你正在为新动作创建视图,并且可能在控制器中使用@dishing = Dishing.new。

如果您正在获取restaurant_id和dish_id,那么