Add an index to a form

Hello,

I’m having some trouble with forms, my app allows to enter data by
using a multi-step form that has 7 steps.
There are 3 steps that may let the user to add 1 form, for example
there’s a step called “children”
and that children has the following fields:

in the “invite” partial
_invite.html.erb
<%= fields_for “user[invites_attributes][]”, invite do |i| %>

  • <%= link_to("Remove", "#delete", :class => "delete-invite") %> <%= i.label :full_name, "Full Name" %> <%= i.text_field :full_name %> <%= i.label :email, "Email Address" %> <%= i.text_field :email %>
  • <% end %>

    I’m having some troubles with the first line: <%= fields_for
    “user[invites_attributes][]”, invite do |i| %>
    What is the correct usage of that? I’m using formtastic and when I
    made that line but with my fields

     <%= f.semantic_fields_for ("user[children_attributes][]", user)
    

    do |fes| %>

    and I get this error

    … unexpected ‘,’, expecting ‘)’

    I hope someone can help

    Thanks in advance

    On Oct 26, 2011, at 11:53 AM, JavierQQ wrote:

    but one father may have more than 1 child and I’m adding another form
    with ajax by following this

    I haven’t followed that particular tutorial, but I have used the
    Railscasts (73 - 75) and Ryan B.’ fabulous nested_form gem. Note that
    the 'casts show how to do it long-hand, and the gem simply wraps up all
    that work and puts a bow on it. You can probably simply follow the
    directions from the gem and get on with your life if you already know
    the theory.

    Walter

    On 26 October 2011 16:53, JavierQQ [email protected] wrote:

    but one father may have more than 1 child and I’m adding another form
    <%= i.label :email, “Email Address” %>
    <%= i.text_field :email %>

    <% end %>

    I’m having some troubles with the first line: <%= fields_for
    “user[invites_attributes][]”, invite do |i| %>
    What is the correct usage of that? I’m using formtastic and when I
    made that line but with my fields

    <%= f.semantic_fields_for (“user[children_attributes][]”, user)

    You should not have a space between semantic_fields_for and (. That
    is ruby syntax. Whether it fixes you problem is another matter.

    Colin


    You received this message because you are subscribed to the Google G. “Ruby
    on Rails: Talk” group.
    To post to this group, send email to [email protected].
    To unsubscribe from this group, send email to
    [email protected].
    For more options, visit this group at
    http://groups.google.com/group/rubyonrails-talk?hl=en.


    gplus.to/clanlaw

    On Oct 26, 2011, at 11:53 AM, JavierQQ wrote:

    but one father may have more than 1 child and I’m adding another form
    <%= i.label :email, “Email Address” %>
    do |fes| %>

    and I get this error

    … unexpected ‘,’, expecting ‘)’

    I hope someone can help

    Thanks in advance

    I think that the space after f.semantic_fields_for and the parentheses
    around the argument list are interacting to produce the error.

    I think that you can probably do either fix and resolve the issue:

     <%= f.semantic_fields_for "user[children_attributes][]", user do |
    

    fes| %>

     <%= f.semantic_fields_for("user[children_attributes][]", user) do
    

    |fes| %>

    -Rob

    Rob B.
    [email protected] http://AgileConsultingLLC.com/
    [email protected] http://GaslightSoftware.com/

    In the casts I’ve seen this

    <%= render :partial => 'task', :collection => @project.tasks %>

    so as far as I understand theres a file _task.html.erb, but they
    create tasks by building it in the controller
    should I do something like that?, I mean
    <%= render “children”, :collection => @user.childrens %>

    Thanks for your reply,

    I’ve seen that cast, but when I add another form for another children
    the
    HTML shows this

    so it’s not increasing and it will only save the first child

    and now I’m trying what the cast says

    _children.html.erb

    <%= f.semantic_fields_for “user[children][]”, user do |children| %>

    <% end %>

    and I get this

    undefined local variable or method `user’

    It’s maybe something I’m not seeing, I’m starting with rails and I hope
    someone can help me

    Thanks

    On Oct 26, 2011, at 12:17 PM, Javier Q. wrote:

    _children.html.erb

    <%= f.semantic_fields_for “user[children][]”, user do |children| %>

    <% end %>

    and I get this
    undefined local variable or method `user’

    It’s maybe something I’m not seeing, I’m starting with rails and I hope someone
    can help me

    Here’s an extraction from a site that’s using Ryan’s plug-in (a person
    can have N images):

    #people_controller.rb

    def new
    @person = Person.new
    @person.images.build
    end

    #person.rb
    class Person < ActiveRecord::Base
    attr_accessible :images_attributes, :name, :sort_name, :birth, :death,
    :nationality, :historical_period, :short_description, :bio
    has_many :images, :as => :attachable, :dependent => :destroy
    accepts_nested_attributes_for :images, :reject_if => lambda { |a|
    a[:file].blank? && a[:file_uid].blank? && a[:file_url].blank? &&
    a[:name].blank? }, :allow_destroy => true
    validates :name, :presence => true
    validates :nationality, :presence => true
    validates :historical_period, :presence => true
    end

    #image.rb
    class Image < ActiveRecord::Base
    attr_accessible :name, :attachable_type, :attachable_id, :file_name,
    :file_url, :file_uid, :file, :retained_file, :remove_file, :created_at,
    :file_height, :updated_at, :file_width
    image_accessor :file
    belongs_to :attachable, :polymorphic => true
    def label
    name.blank? ? file_name : name
    end
    end

    #people/_form.html.erb
    <%= nested_form_for @person, :url => person_path(@person, :page =>
    params[:page]), :html => {:multipart => true} do |f| %>
    <%= f.error_messages %>

    <%= f.fields_for :images %>

    <%= f.link_to_add "Add an image", :images %>

    <%= f.submit %>

    <% end %>

    #people/_image_fields.html.erb (this name is critical to success)

    <%- if f.object.file_uid -%> <%= link_to( image_tag( f.object.file.thumb('60x60#').url, :class => 'border', :size => '60x60' ), f.object.file.url, :target => '_blank') %>
    <%= f.object.file_width %> <%= f.object.file_height %>
    <%= f.link_to_remove "Delete", :class => 'delete' %> <%- else -%> <%= image_tag( 'thumb_new.jpg', :class => 'border', :size => '60x60' ) %> <%- end -%> <%= f.label :name %> <%= f.text_field :name %>
    <%= f.label :file, "Upload" %> <%= f.file_field :file %> <%= f.hidden_field :retained_file %>
    <%= f.label :file_url, "Upload From URL" %> <%= f.text_field :file_url %>

    That is quite literally all there is to it, except to follow the rest of
    the install directions on the Github page.

    Walter