js111
js111

Reputation: 1314

Nested form error in Rails app

Models relevant to this question: user, friend, interest, person_interest. Person_interest is polymoprhic and can store interests that either belong to a user or a friend.

Interests is pre-populated with approx. 30 interests. When a user registers they are asked to select their own interests, then lower in the form enter in their friends names select the interests of that person.

Trying to achieve this with <%= friend_f.input :interests, :as => :check_boxes, :label => false %>

but getting the following error:

NoMethodError in User_steps#show

Showing /Users/nelsonkeating/Desktop/ReminDeal/app/views/user_steps/show.html.erb where line #30 raised:

undefined method `to_i' for []:ActiveRecord::Relation
Extracted source (around line #30):

27:         :end_year => Date.today.year - 12,
28:         :order => [:month, :day, :year ] %>
29:       <%= friend_f.input :gender, :collection => ['male','female'] %>
30:       <%= friend_f.input :interests, :as => :check_boxes, :label => false %>
31:     <%end%>
32:   
33: 
Rails.root: /Users/nelsonkeating/Desktop/ReminDeal

Application Trace | Framework Trace | Full Trace
app/views/user_steps/show.html.erb:30:in `block (2 levels) in _app_views_user_steps_show_html_erb__1202886937753978667_70281885932700'
app/views/user_steps/show.html.erb:23:in `block in _app_views_user_steps_show_html_erb__1202886937753978667_70281885932700'
app/views/user_steps/show.html.erb:1:in `_app_views_user_steps_show_html_erb__1202886937753978667_70281885932700'
Request

Parameters:

{"id"=>"show"}

And here's the form..

<%= simple_form_for @user do |f| %>

  <%= f.input :name %>
  <%= f.input :city %>
  <%= f.input :address, :live => true  %>
  <%= f.input :zipcode %>
  <%= f.input :date_of_birth, :as => :date, :start_year => 1900,
    :end_year => Date.today.year - 12,
    :order => [ :day, :month, :year] %>
  <%= f.input :gender, :collection => [:male, :female] %>


    <h4>Select your top 3 interests..</h4>
      <%= f.association :interests, :as => :check_boxes, :label => false %>

    <h4>What holidays do you celebrate?</h4>
      <%= f.association :holidays, :as => :check_boxes, :label => false %> 



<h4>Add up to 10 friends birthdays that you would like to remember..</h4>
    <%= f.simple_fields_for :friends do |friend_f| %>

      <%= friend_f.input :name %>
      <%= friend_f.input :dob, :label => :Birthday, :as => :date, :start_year => Date.today.year - 90,
        :end_year => Date.today.year - 12,
        :order => [:month, :day, :year ] %>
      <%= friend_f.input :gender, :collection => ['male','female'] %>
      <%= friend_f.input :interests, :as => :check_boxes, :label => false %>
     <%end%>


 <%= f.button :submit, :class => 'btn btn-success' %>
      <%end%>

Git repo is here: https://github.com/nelsonkeating/ReminDeal

Upvotes: 1

Views: 930

Answers (2)

dimuch
dimuch

Reputation: 12818

Do you have any reasons to avoid friend_f.association ?

<%= friend_f.association :interests, :as => :check_boxes, :label => false %>

Works for me. Or change :interests to :interest_ids in kasper's code, also should work.

<%= friend_f.input :interest_ids, :as => :check_boxes, :label => false, :collection => Interest.all %>

Upvotes: 6

kasper375
kasper375

Reputation: 171

Try to write code <%= friend_f.input :interests, :as => :check_boxes, :label => false %> with :collection key. For example:

<%= friend_f.input :interests, :as => :check_boxes, :label => false, :collection => Interest.all %>

Upvotes: 0

Related Questions