HI! In my form rendered partially, for 3 models: User, Address, Phone.
The are if conditions in the form for handling user registration and updating user. When i do the registration part the submit button works but on the edit it wont !!??
Heres the complete form: manage.html.erb:
<%= error_messages_for 'user' %> <% if params[:id].blank? -%> <%form_for :user, :url=>{:action=>:register} do |form| %> <%= render :partial=>'form', :locals => { :form => form }%> <fieldset class="alt" id="submit"> <%= submit_tag "rejestruj"%> </fieldset> <%end%> <%else -%> <%form_for :user,@user, :url=>{ :action=>:update,:id=>@user.id} do | form> %> <%= render :partial=>'form', :locals => { :form => form }%> <% end %> <fieldset class="alt" id="submit"> <%= submit_tag "zmień" %> </fieldset> <%end%>
_form.html.erb
<fieldset> <legend> <span>Dane systemowe:</span> </legend> <label for="login"> <span>Login:</span> <%=form.text_field :login,:size=>25 %><em>*</em> </label> <label for="user_password"> <span>Hasło:</span> <%=form.password_field :password, :size=>30 %><em>*</em> </label> <label for="user_password_confirmation"> <span>Powtórz hasło:</span> <%=form.password_field :password_confirmation, :size=>30 %><em>*</em> </label> <label for="type"> <span>typ konta:</span> </label> <fieldset> <%if session[:user_level].to_i == 3 %> <label> <span>administrator:</span> <%=form.radio_button :account_type, '3' %> </label> <%end %> <label for="user_acount_type"> <span>nauczyciel: </span> <%=form.radio_button :account_type, '2' %> </label> <label> <span>uczeń:</span> <%=form.radio_button :account_type, '1' %> </label> </fieldset> </fieldset> <fieldset class="alt"> <legend> <span>Dane osobowe:</span> </legend> <label for="user_name"> <span>Imie:</span> <%=form.text_field :name, :size=>15 %><em>*</em> </label> <label for="user_surname"> <span>Nazwisko:</span> <%=form.text_field :surname, :size=>20 %><em>*</em> </label> </fieldset> <fieldset> <legend> <span>Dane adresowe:</span> </legend> <%if @user %> <%fields_for :address, @user.address do |a| %> <%=render :partial=>'address',:locals=>{:a => a} %> <%end %> <%else %> <%fields_for :address do |a| %> <%=render :partial=>'address',:locals=>{:a => a} %> <%end %> <%end %> <%if @user %> <%fields_for :phones, @user.phones[0] do |p| %> <%=render :partial=>'phones',:locals=>{ => p} %> <%end %> <%else %> <%fields_for :phones do |p| %> <%=render :partial=>'phones',:locals=>{ => p} %> <%end %> <%end %> <label for="user_email"> <span>Email:</span> <%=form.text_field :email, :size=>55 %><em>*</em> </label> <label for="user_home_page"> <span>prywatna strona www:</span> <%=form.text_field :home_page, :size=>75 %> </label> </fieldset>
address.html.erb <label for="street"><span>Ulica:</span> <%= a.text_field :street, :size=>25%> </label> <label for="number"><span>Numer:</span> <%= a.text_field :number, :size=>8%> </label>
<label for="street"><span>Miasto:</span> <%= a.text_field :city, :size=>30 %> </label> <label for="post_code"><span>Kod pocztowy:</span> <%= a.text_field :post_code, :size=>17%> </label>
<label for="state"><span>Województwo:</span> <%= a.text_field :state, :size=>18 %> </label>
<label for="user_address_country"><span>Kraj:</span> <%= a.text_field :country, :size=>25 %> </label>
_phones.html.erb <label for="phone_type"><span>Telefon:</span> <%= p.select :phone_type,['domowy','komórkowy','biurowy']%> </label> <label for="home_phone"><span>numer:</span> <%= p.text_field :number, :size=>19%> </label>
And the action in the controller def register @user = User.new(params[:user]) @address = Address.new(params[:address]) @user.address = Address.new(params[:address]) #@address @phone = Phone.new(params[:phones]) @user.phones << @phone if request.post? and @user.save flash[:notice] = "Zostałeś zarejestrowany " + @user.login redirect_to(:controller=>:main, :action =>:index) else render :action=>:manage end end
Other thing is that adding the addres to juser stoped working, after adding another field