Forum: Ruby on Rails Write checkbox values in database

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Swarna P. (Guest)
on 2009-02-11 08:43
Hi,

I am new to rails. Any support from your side would be very helpful.

I have a model called child and another model called childcategory. I
have given the code in app/views/children/show.html.erb of child.

<% remote_form_for [@child, Childcategory.new] do |f| %>
<p>
    <%= f.label :body, " Allowed Categories " %> <br />
    <% for category in @cat do %>
       <%= check_box 'checkbox', category.categoryname %> <%=
category.categoryname %>
    <% end %>
  </p>
<p> <%= f.submit "Update Settings" %> </p>
<% end %>


NOw the check boxes are displayed from another model called
Filtercategory. When the user checks a check box in the above view, i
want the check box value to be inserted in a model called Childcategory.
The controller code is as follows.

app/controllers/childcategories_controller.rb

class ChildcategoriesController < ApplicationController

def create
     @child = Child.find(params[:child_id])
     @catlist = @child.childcategories.create!(params[:childcategory])

     respond_to do |format|
       format.html { redirect_to @child }
       format.js
    end
   end

end

But  when i submit the "Update Settings" button, a new record is created
with childid but the category name in the check box is not saved in the
table.


Can you say whats the issue. I couldnt solve this.


Any suggestion would be really supportive.
Aaron B. (Guest)
on 2009-02-11 11:00
(Received via mailing list)
For starters look at how you are constructing your check_box tags.
The way you have it written now the categories will not be contained
inside the childcategory params.  Something like this might get you
headed in the right direction:

<% for category in @categories %>
  <%= check_box_tag 'child_category[category_ids][]', category.id %> <
%= category.name %>
<% end %>

Then look at generated source for the check boxes and watch the params
that get passed when you submit the form.  A single check box is easy,
a series of checkboxes that represent values stored in an association
is much harder and will require some extra work in the view and
possibly the model.

Aaron
Swarna P. (Guest)
on 2009-02-11 11:50
Hi Aaron,


          Thanks for your precious time.
I tried your suggestion too. I think i am doing some relationship
mistake between models. I am not sure whether i am doing it in the right
way. I will try to explain what i have done.

   Kindly give me whether i am right or whether i am on the wrong way.


I have a models called Child.rb, Childcategory.rb and Filtercategory.rb

The relationships are as given below

class Child < ActiveRecord::Base
  belongs_to :user
  has_many :childcategories
  has_many :timelimits
end


class Childcategory < ActiveRecord::Base
  has_and_belongs_to_many :filtercategories
end


class Filtercategory < ActiveRecord::Base

end


NOw i have list of category names in Filtercategories table. I am
listing them using checkboxes in the child view and trying to write them
in Childcategories table if checked by the user.
 i.e. app/views/children/show.html.erb


<% remote_form_for [@child, Childcategory.new] do |f| %>
<p>
    <%= f.label :body, " Allowed Categories " %> <br />
    <% for category in @cat  %>
<%= check_box_tag 'child_category[category_ids][]', category.id %>

 <%= category.categoryname %>
    <% end %>
  </p>
<p> <%= f.submit "Update Settings" %> </p>
<% end %>

The controller of Childcategories is as below.


class ChildcategoriesController < ApplicationController

def create
     @child = Child.find(params[:child_id])
     @catlist = @child.childcategories.create!(params[:childcategory])

     respond_to do |format|
       format.html { redirect_to @child }
       format.js
    end
   end

end



Hence i have written the code in this manner. But the table is not
updated with categories checked by the user. Only childid is inserted
and new record is created without category name and id.


Kindly help me in this regard.It will be very supportive.

Thanks for any help,

Swarna
This topic is locked and can not be replied to.