Forum: Ruby on Rails Need help fixing an error populating a select box in the insert page but works in the editpage

2f027435ab4600f5400aec3fcfbe74e6?d=identicon&s=25 Ruby Rooikie (Guest)
on 2012-11-18 09:52
(Received via mailing list)
Two Models Country and Bank. The below form is used for insert and edit
page works fine .  f.collection_select works fine for edit page but
throws
error for insert page. I think error it is trying to populate the
selected
value in the combo box but country id is not available. Can you help me
fixing the issue? What is prompt used for?




Error

undefined method `map' for nil:NilClass

Extracted source (around line *#23*):

20:     <%= f.label :country_id %><br />
21:
22:
23:      <%= f.collection_select :country_id, @countries, :id, :name,
:prompt => "Test" %>
24:
25:   <div class="actions">
26:     <%= f.submit %>

class Bank < ActiveRecord::Base
  attr_accessible :name,:country_id
  belongs_to :country
  validates :name, :presence => true

    validates_presence_of :country
end


class Country < ActiveRecord::Base
  attr_accessible :name
 end

Form



<%= form_for(@bank) do |f| %>
  <% if @bank.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@bank.errors.count, "error") %> prohibited this
bank from being saved:</h2>

      <ul>
      <% @bank.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>

  <div class="field">
    <%= f.label :country_id %><br />


     <%= f.collection_select :country_id, @countries, :id, :name,
:prompt
=> "Test" %>


  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2012-11-18 10:39
(Received via mailing list)
On 17 November 2012 17:26, Ruby Rooikie <rubyrookie1@gmail.com> wrote:
>
> undefined method `map' for nil:NilClass
>
> Extracted source (around line #23):
>
> 20:     <%= f.label :country_id %><br />
> 21:
> 22:
> 23:      <%= f.collection_select :country_id, @countries, :id, :name,
> :prompt => "Test" %>

My guess is that @countries is nil  (the clue is in the error
message).  Are you setting that up in the controller action for
insert?

Colin
5c5b50426affe847d550a34ff9eae507?d=identicon&s=25 rubyrookie (Guest)
on 2012-11-18 11:03
(Received via mailing list)
Yes I am setting it up. i got it to work. :) Thanks
5c5b50426affe847d550a34ff9eae507?d=identicon&s=25 rubyrookie (Guest)
on 2012-11-18 11:20
(Received via mailing list)
Thanks I have it working now.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.