Hi Folks, I want a form in a rails 3.0.10 app with form_for exactly I have 3 models @apple, @basket, @table class Apple belongs_to :tables belongs_to: baskets end class Basket belongs_to :tables has_many :apples end class Table has_many :baskets has_many :apples end MY QUESTION For apples I have many color as well as for baskets I have many different kinds of shapes if I have the follow code in the index.html.erb file <%= form_for :table do |f| %> <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt => true}) %> <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) %> <%= f.submit %> <% end %> *** appear the page correctly *** meanwhile if I have the follow code <%= form_for @table do |f| %> <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt => true}) %> <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) %> <%= f.submit %> <% end %> the page show the follow error page //////////// undefined method `model_name'' for NilClass:Class Extracted source (around line #1): 1: <%= form_for @table do |f| //////////// change only the first line in the example I have <%= form_for @table do |f| %> and not <%= form_for :table do |f| %> NOW which is the different between <%= form_for @table do |f| %> and <%= form_for :table do |f| %> sorry for this post but I want to understand the Rails philosophy thanks a lot anyway, C -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Is it all made with scaffolds? or what do you have in your controller? Javier Q. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 21 March 2012 00:27, Cluter Vipic <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi Folks, > > I want a form in a rails 3.0.10 app with form_for exactly I have 3 > models > > @apple, @basket, @table > > class Apple > belongs_to :tables > belongs_to: baskets > end > > class Basket > belongs_to :tables > has_many :apples > end > > class Table > has_many :baskets > has_many :apples > end > > MY QUESTION > > For apples I have many color as well as for baskets I have many > different kinds of shapes > > if I have the follow code in the index.html.erb file > > <%= form_for :table do |f| %> > > <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt => > true}) %> > > <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) > %> > > <%= f.submit %> > > <% end %> > > *** appear the page correctly *** > > meanwhile if I have the follow code > > <%= form_for @table do |f| %> > > <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt => > true}) %> > > <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) > %> > > <%= f.submit %> > > <% end %> > > the page show the follow error page > > //////////// > undefined method `model_name'' for NilClass:ClassThat means that @table is nil. This form cannot work if @table has not been setup to be an object of appropriate type. :table is a symbol used here to represent a type of object, @table is a variable that must have been setup in the controller in order to use it in the view. Colin. Colin> > Extracted source (around line #1): > > 1: <%= form_for @table do |f| > //////////// > > change only the first line in the example I have <%= form_for @table do > |f| %> and not > > <%= form_for :table do |f| %> > > NOW > > which is the different between > > > <%= form_for @table do |f| %> > > and > > <%= form_for :table do |f| %> > > > sorry for this post but I want to understand the Rails philosophy > > thanks a lot anyway, > > C > > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en. >-- gplus.to/clanlaw -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks for all answer I don''t use the scaffold for that app here is my table CONTROLLER class TableController < ApplicationController def index @basket = Basket.find(:all) @apple = Apple.find(:all) end def new @table = Table.new end end here my MODEL class Table < ActiveRecord::Base belongs_to :apples belongs_to :baskets end maybe above you can see a logic error? or syntax error? thanks anyway, C Colin Law wrote in post #1052589:> On 21 March 2012 00:27, Cluter Vipic <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: >> end >> >> true}) %> >> meanwhile if I have the follow code >> >> <% end %> >> >> the page show the follow error page >> >> //////////// >> undefined method `model_name'' for NilClass:Class > > That means that @table is nil. This form cannot work if @table has > not been setup to be an object of appropriate type. :table is a > symbol used here to represent a type of object, @table is a variable > that must have been setup in the controller in order to use it in the > view. > > Colin. > > Colin > >> >> >> -- >> You received this message because you are subscribed to the Google Groups "Ruby > on Rails: Talk" group. >> To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. >> > > > > -- > gplus.to/clanlaw-- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
If you are going to use @table in index.html.erb (that is handled by def index ) you have to add to the index method def index .... @table = Table.new end but I don''t know why does it works with the symbol and not with the instance Javier Q. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi Javier, you are right I just added it anyway when I reloaded the page now I have another error undefined method `basket'' for #<Table id: nil, created_at: nil, updated_at: nil> I edit the basket and apple controller with def index @basket = Basket.find(:all) end def index @apple = Apple.find(:all) end but I have always the same error thanks C Javier Quarite wrote in post #1052696:> If you are going to use @table in index.html.erb (that is handled by def > index ) you have to add to the index method > > def index > > .... > @table = Table.new > end > > but I don''t know why does it works with the symbol and not with the > instance > > Javier Q.-- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Wed, Mar 21, 2012 at 2:47 PM, Cluter Vipic <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi Javier, > > you are right I just added it anyway when I reloaded the page now I have > another error > > undefined method `basket'' for #<Table id: nil, created_at: nil, > updated_at: nil> > >I''m not sure what are the fields of your Table ... table :D, but according with your error it only has and id, and the timestamps(created_at, update_at) If you want to save inside Table the basket_id and the color_id then you have to add columns for it, after that instead of the symbols :basket and :apple, write :basket_id and :apple_id (I''m not sure if thats correc because I don''t usually use the form helpers from rails, I use a gem simple_form). You should take a look rails guides on views and forms Javier Q. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi, I figured out this error undefined method `basket'' for #<Table id: nil, created_at: nil, updated_at: nil> simply add two columns (apple & basket) in the table called Table :) now appear correctly the webpage with the drop down menu so If you have in the app/views/table/new.html.erb 1. <%= form_for @table do |f| %> 2. <%= f.collection_select(:basket, @basket, :id, :shape, {:prompt => true}) %> 3. <%= f.collection_select(:apple, @apple, :id, :color, {:prompt => true}) %> it works but A. in the model Table you have the follow code def new @apple = Apple.find(:all) @Basket = Basket.find(:all) @table = Table.new end B. in the table called ''Table'' obviously you have 2 record ''apple'' and '''' NOW even if I don''t have the right code as letter A. and letter B. if I write in the line 1. <%= form_for :table do |f| %> and not <%= form_for @table do |f| %> the page appear correctly and load also the data from apple & basket table in the drop down menu I don''t know why but is only a doubt to understand the difference between a symbol and an instance thanks a lot anyway C -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.