collection_select, undefined method `map' for

2020-04-09 15:51发布

I added in the @user = User.new line to make sure it isn't nil. Which object is nil?

undefined method `map' for nil:NilClass

Extracted source (around line #11):

8:  <%= f.hidden_field(:width)%>
9:  <%= f.hidden_field(:height)%>
10:     <% @user = User.new %>
11:     <%= collection_select(@user, :full_name, @user_array, :id, {:prompt => 'true'}, {:class=>'select'})%>
12:     <div class="submit-button">
13:         <%= submit_tag("Tag the person!")%>
14:     </div>

2条回答
够拽才男人
2楼-- · 2020-04-09 16:29

@user_array is nil. Make sure it's set with an array of users to avoid this error message.

Alternatively, set @user_array to [] (an empty array) if you wish to show no options in the `select, e.g.:

collection_select @user, :full_name, @user_array || [], :id, 
  { prompt: 'true' }, { class: 'select' }
查看更多
女痞
3楼-- · 2020-04-09 16:42

You must to add @user_array to the actions: create, new, edit and update, the best way is using before_actions

before_action :set_user_array , only: [:edit, :update, :new, :create]

 private
    def set_user_array 
      @user_array = User.all 
    end
查看更多
登录 后发表回答