why is id off by one or defined different in edit vs in update? I will explain what I mean
I have a controller called Bottles and a model Bottle My config\routes.rb file has the line- resources :bottles I have this controller class BottlesController < ApplicationController def index end def show end def edit # http://127.0.0.1:3000/bottles/0/edit :id==0 # <ActionController::Parameters {"controller"=>"bottles", "action"=>"edit", "id"=>"0"} permitted: false> # Bottle.all[0] gives <Bottle id: 1, name: "tod", size: 234,...> @bottle=Bottle.all[params[:id].to_i] #:id==0 end I have these views C:\rubytest\testoby>type app\views\bottles\new.html.erb <%= form_for @bottle do |f| %> <%= f.text_field :name %> <%= f.text_field :size %> <%= f.submit “Create” %> <% end %> C:\rubytest\testoby>type app\views\bottles\edit.html.erb <%= form_for @bottle do |f| %> <%= f.text_field :name %> <%= f.text_field :size %> <%= f.submit “Save” %> <% end %> C:\rubytest\testoby> I went to http://127.0.0.1:3000/bottles/new and I made a bottle name- tod size- 234 I then go to http://127.0.0.1:3000/bottles/0/edit and I see the bottle there in the form I then change tod to todd and click ‘save’ here’s the weird thing I see the URL change to http://127.0.0.1:3000/bottles/1 but i’d expect it to change to http://127.0.0.1:3000/bottles/0 I’d expect the form to be submitted to /bottles/0 but it’s not, it’s submitted to /bottles/1 And the params have :id=1 So when it comes to my update, I have to write this line in the controller, subtracting 1 from the id @abottle=Bottle.all[params[:id].to_i-1] I can see that there is a difference of definition of :id that one could use… The id in the URL could be either A)The index in the array e.g. Bottle.all[params[:id]] (Which is what i’ve got for the edit action). or B) The id attribute of the object, (Which is what i’ve got for the update action @abottle=Bottle.all[params[:id].to_i-1] One could say, it’s 'A', the URL. But then why should the update URL have an :id that is one up from the ID in the edit URL? Thanks -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/3e864d52-d02b-4aa4-9839-ba550b472fb0%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.