Edit the form


#1

Hi i used the code in editresortbasic.html.erb

<% form_for @editresortbasic do %>

wizard controller.rb

def editresortbasic

@resort_basic =ResortBasic.find_by_id(params[:id])

if request.post?
@resort_basic.update_attributes(params[:resort_basic])
end

But i click the edit button and i got the text box empty.Im new in ruby
and
here im only person doing this application and i can’t understand the
error.So i frequently asked the question to you.Thanks for ur help.give
any
idea?


#2

there are two main ways to create forms in RoR:

  • use the helpers that end with _tag, those create “pure” html
    tags and are not too much aware of objects contents (like
    @editresortbasic)
  • use it like that:

in the controllers edit action get @editresortbasic like:

def edit
@resort_basic = ResortBasic.find(params[:id])

this assumes, that the id of the ResortBasic to be edited is

handed to this action
end

then you can built your view like this:

<% form_for @resort_basic do |f| %>
<%= f.text_field :name %>
<% end %>

That way the form “knows” of the @resort_basic object
and using the textfield that way, Rails knows that it’s linked
to this object and reads the value from @resort_basic.name
Same for all the other fields in your form that are columns
in the resort_basics table.

you can read many details about that in all RoR online tutorials,
and you should (must) get comfortable with that kind of Rails syntax.
There is not much sense in starting a project without knowing
at least the basic syntax of the framework.


#3

You are passing params[:id] as argument to find, so no need to use
find_by_id. Its enough to use
@resort_basic =ResortBasic.find(params[:id])


#4

What does the link which directs you to the edit method for the WizardS
Controller look like? You aren’t getting an ID passed in the params.

Your edit.html.erb code has nothing to do with this error, this comes
from the form that is going TO the edit view.

How is the link TO the edit form spec’ed? I assume you’re currently on
an index or show view…


#5

Hi
i used the same code but i got the error:

controller code:

def edit

@resort_basic =ResortBasic.find(params[:id])
end

View code:

<% form_for(@resort_basic) do|f| %>



Edit Resort Basic


<tr>
    <td>
       <b>Resort Class</b>
   </td>
   <td>
       <%=f.collection_select(:resortclassid,

ResortClass.find(:all),:id,:resortclass)%>

   </td>
</tr>
<tr>
    <td>
       <b>Season</b>
   </td>
   <td>
       <%=f.collection_select(:seasonid,

Season.find(:all),:id,:seasontype)%>






Resort Name
        <%=f.text_field :resortname %>
    </td>

</tr>
<tr>
    <td>
       <b>Resort Type</b>
   </td>
   <td>

       <%=f.collection_select(resort_basic.resorttypeid,

ResortType.find(:all),id,resorttype)%>


Website

<%=f. text_field :website %>
   <td>

        <%=f.submit "Next",:class =>'myButton' %>
 </td>

</tr>
<% end %>

I got the controller bugs:


ActiveRecord::RecordNotFound in WizardController#edit

Couldn’t find ResortBasic without an ID

RAILS_ROOT: D:/RubyProjects/TestEcohols
Application Trace http://localhost:3000/wizard/edit# | Framework
Tracehttp://localhost:3000/wizard/edit#| Full
Trace http://localhost:3000/wizard/edit#

D:/Program Files/NetBeans
6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1248:in
find_from_ids' D:/Program Files/NetBeans 6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:504:infind’
vendor/plugins/paginating_find/lib/paginating_find.rb:103:in
find_with_pagination' app/controllers/wizard_controller.rb:233:inedit’
:1:in `start’

                           def edit

Error in line: @resort_basic =ResortBasic.find(params[:id])

                             end

I used the same code but i got the bugs.so i can’t understand the
error.Help
for me and give link ruby on rails tutorials

Thanks