"new" form as partial?

Hi!

I think I'm trying to accomplish something very common, but I can't
find a way to do it.

Creating a certain type of database record is a very frequent task in
my application (or at least it should be ;-)). So I want to be able to
place the form for creating that database record in practically any
view, not just the /mymodel/new view.

I figured that this might be done using a partial, but since I'm
pretty new to rails, I don't get it one.

Can anybody point me to a tutorial for this problem?

I'm using rails 2.3.5.

Thank you!
Marian

I'm sure you can refactor code to fit almost anything into a single
new/edit partial :slight_smile: But in my small experience the models are
different enough so that having different views for different models
makes the code more readable. That said, I almost always share new
and edit for a model in a partial:

e.g. new.html.erb
<%= render( :partial => "form", :locals => { :buttonname => 'Add' } )
%>

edit.html.erb
<%= render( :partial => "form", :locals => { :buttonname =>
'Update' } ) %>

_form.html.erb
<%= error_message_on :lab, :base %>
<% form_for ..., do |f| %>
    <%= f.submit buttonname %>
...
<% end %>

Ryan Bates has great screencasts on this sort of thing, and I found
his Mastering Rails Forms http://www.pragprog.com/screencasts/v-rbforms/mastering-rails-forms
($5 a video) to be a great start.

Craig

Assuming you know the basics of rendering a partial within a view (if
not look at the guides at http://guides.rubyonrails.org/) then all you
have to do is include a path in the render partial to tell it where it
is.
render :partial => "/somefolder/form"
will look for views/somefolder/_form.html.erb

Colin