This is a total newbie question, so my apologies! I am learning Ruby from the book Ruby for rails - the only issue is the examples seem to have been written in a earlier version of Ruby. The code in question is <%= form_tag :controller => "customer", :action => "login" %> <p>User name: <%= text_field "customer", "nick" %></p> <p>Password: <%= password_field "customer", "password" %></p> <p><input type="Submit", value="Log in"/></p> <% end_form_tag %> </p> Which gives the error undefined local variable or method `end_form_tag'' for #<ActionView::Base:0x1c39e38> I appreciate that the end_form_tag has been depreciated, I tried replacing it with <% end %> Which then gives compile error /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:9: syntax error, unexpected kENSURE, expecting $end I can''t see any examples on the documentation which also specify the controller, as I say I am a total Ruby newbie so please go easy on me here! -- Posted via http://www.ruby-forum.com/.
Hi Pete, On Thu, 2009-07-30 at 18:51 +0200, Pete Moran wrote:> This is a total newbie question, so my apologies!No need. Welcome aboard!> I am learning Ruby from the book Ruby for rails - the only issue is the > examples seem to have been written in a earlier version of Ruby.Very common issue.> I appreciate that the end_form_tag has been depreciated, I tried > replacing it with <% end %> > > Which then gives > > compile error > /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:9: > syntax error, unexpected kENSURE, expecting $end<% end %> is correct. I believe your problem is that if you''re going to use the :controller/:action syntax, you need to enclose them in {}. e.g., <%= form_tag {:controller => "customer", :action => "login"} %> You''ll want to learn to use Google as your first lines of defense ;-) I recommend that whenever you get an error, you enter it into your Google search bar preceded by the word ''rails''. using the above as an example... Google rails syntax error, unexpected kENSURE, expecting $end You''ll also want to learn to read the rails documentation. api.rubyonrails.org Focus first on the methods which are in the lower pane on the left.> I can''t see any examples on the documentation which also specify the > controller, as I say I am a total Ruby newbie so please go easy on me > here!The easiest way to get a handle on some of this basic stuff is to use the scaffold feature. You''ll get the full stack. I recommend generating a rails app named ''sandbox''. Keep it around for working out issues / problems later. rails sandbox rake db:create:all ruby script/scaffold test_model field1:string field2:text field3:integer The files generated will give you the basics of the current syntax. HTH, Bill
Thanks Bill, I did try google first, but didn''t find the correct answer :) OK - I tried what you said, but that seemed to give me a new problem :( <%= form_tag {:controller => "customer", :action => "login"} %> <p>User name: <%= text_field "customer", "nick" %></p> <p>Password: <%= password_field "customer", "password" %></p> <p><input type="Submit", value="Log in"/></p> <% end %> </p> Error now is syntax error, unexpected tASSOC, expecting ''}'' ...cat(( form_tag {:controller => "customer", :action => "login... ^ /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:1: syntax error, unexpected '','', expecting ''}'' ...ag {:controller => "customer", :action => "login"} ).to_s); ... ^ /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:9: syntax error, unexpected kENSURE, expecting $end In terms of the scaffold stuff, well I also tried that and got a error :( rake db:create:all rake aborted! No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2377:in `raw_load_rakefile'' (See full trace by running task with --trace) And then ruby script/scaffold test_model field1:string field2:text field3:integer ruby: No such file or directory -- script/scaffold (LoadError) -- Posted via http://www.ruby-forum.com/.
Hi Pete, It looks like you have more than one problem. For starters, what platform are you using? OS, Ruby, Rails ruby -v rails -v On Thu, 2009-07-30 at 19:39 +0200, Pete Moran wrote:> Thanks Bill,You''re welcome.> I did try google first, but didn''t find the correct answer :) > > OK - I tried what you said, but that seemed to give me a new problem :( > > <%= form_tag {:controller => "customer", :action => "login"} %> > > <p>User name: <%= text_field "customer", "nick" %></p> > <p>Password: <%= password_field "customer", "password" %></p> > <p><input type="Submit", value="Log in"/></p> > <% end %> > </p> > > > Error now is > > syntax error, unexpected tASSOC, expecting ''}'' > ...cat(( form_tag {:controller => "customer", :action => "login... > ^ > /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:1: > syntax error, unexpected '','', expecting ''}'' > ...ag {:controller => "customer", :action => "login"} ).to_s); ... > ^ > /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:9: > syntax error, unexpected kENSURE, expecting $end >As a first step, try wrappiing the {..} in parens. form_tag( {:controller => "customer", :action => "login"} If that doesn''t fix it, post the whole view file.> In terms of the scaffold stuff, well I also tried that and got a error > :( >My bad. Incomplete / incorrect instructions. rails sandbox # this assumes you''re ok with sqlite, otherwise, # use -d to specify your database of choice cd sandbox # beyond the initial step of creating your rails # app, all other commands must take place within # an app directory rake db:create:all # even had you been in an app directory, the command I sent # was incorrect. use the following instead. ruby script/generate scaffold test_model field1:string field2:text field3:integer> rake db:create:all > rake aborted! > No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, > Rakefile.rb) > /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2377:in > `raw_load_rakefile'' > (See full trace by running task with --trace) > > And then > > ruby script/scaffold test_model field1:string field2:text > field3:integer > ruby: No such file or directory -- script/scaffold (LoadError)Both of these occurred because you weren''t in the sandbox app directory. HTH, Bill
On Jul 30, 2009, at 12:51 PM, Pete Moran wrote:> This is a total newbie question, so my apologies! > > I am learning Ruby from the book Ruby for rails - the only issue is > the > examples seem to have been written in a earlier version of Ruby. > > The code in question is > > <%= form_tag :controller => "customer", > :action => "login" %> > <p>User name: <%= text_field "customer", "nick" %></p> > <p>Password: <%= password_field "customer", "password" %></p> > <p><input type="Submit", value="Log in"/></p> > <% end_form_tag %> > </p> > > Which gives the error > > undefined local variable or method `end_form_tag'' for > #<ActionView::Base:0x1c39e38> > > I appreciate that the end_form_tag has been depreciated, I tried > replacing it with <% end %> > > Which then gives > > compile error > /Users/pmoran/rails/r4music1/app/views/customer/_login.html.erb:9: > syntax error, unexpected kENSURE, expecting $end > > I can''t see any examples on the documentation which also specify the > controller, as I say I am a total Ruby newbie so please go easy on me > here!form_tag now takes block and the </form> tag is implicit <% form_tag :controller => "customer", :action => "login" do |form| %> <p>User name: <%= text_field "customer", "nick" %></p> <p>Password: <%= password_field "customer", "password" %></p> <p><input type="Submit", value="Log in"/></p> <% end %> Note that the form_tag is in <% %> rather than <%= %> The <% end %> is for the block that is started by the ''do''. It also looks like you may have a Customer model and if that is the case, then you probably want something like (assuming you have tucked it into an instance variable with ''@customer = Customer.new'' in your controller): <% form_for @customer, :url => { :controller => "customer", :action => "login" } do |form| %> <p><%= form.label :nick, "User name:" %> <%= form.text_field :nick %></p> <p><%= form.label :password, "Password:" %> <%= form.password_field :password %></p> <p><%= submit_tag "Log in" %></p> <% end %> -Rob Rob Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org